1

假设我在ah文件中有以下模板函数

#include <iostream>

template <class T>
void foo(T arg)
{
   ...some code...
   std::cout<< arg <<std::endl;
}

以及a.cpp中的以下代码

#include "Header.h"
#include <string>
int main(int argc, char* argv[])
{
    foo<int>(5);
    foo<double>(5.25);
    foo<std::string>("Hello World");
    return 0;
}

当我查看此可执行文件的链接器(在 VS 中设置 /MAP(生成映射文件)选项)生成的.map文件时,我只看到 foo 函数的一个条目,即

0001:000006f0       ??$foo@H@@YAXH@Z           004016f0 f i main.obj

但是我的假设是它应该包含 3 个单独的 foo 函数条目(每个实例一个)。用高德地图查看地图文件显示该条目对应

 void foo<int>(int) 

功能。有人可以解释为什么没有条目

void foo<std::string>(std::string) 
void foo<double>(double)

功能?

谢谢

4

0 回答 0