如果我有一个模板函数:
template<class T, class S>
void foo(T t, S s){..//do something//}
然后,在主程序中我这样做:
string str = "something";
char* ch = "somthingelse";
double num = 1.5;
foo(ch, num);
foo(num, ch);
foo(str, num);
..
我的问题是在编译中将在可执行文件中写入哪些代码? 会是:
foo<char*, double>(..);
foo<double, char*>(..);
foo<string, double>(..);
否则编译会在第二次调用 foo 时知道要更改类的位置。 或者在第三个中,以隐式方式使用 char* 创建字符串类?
最佳答案
通常它会实例化所有三个。他们不会寻求 default-cast-workarounds 来节省二进制图像空间。
关于c++ - 模板以及编译期间创建的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856712/