c++ - 模板以及编译期间创建的内容

标签 c++ templates

如果我有一个模板函数:

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/

相关文章:

c# - 使用整数指针从 C# 调用外部 DLL

c++ - 有没有办法获得给定数量的输入,其中数字在 C++ 的编译时由模板给出?

c++ - 如何格式化我的函数以调用模板类?

c++ - 根据构造函数参数推导模板类型

c++ - 如果

C++ 创建通用模板函数特化

c++ - 在 const 方法中修改指针值

c++ - 由于未调用 _ReadBarrier() 而导致错误的示例程序是什么?

c++ - 使用MPI时 "Top"输出什么信息

c++ - PSTR如何接收多个不以逗号分隔的字符串?