Gui*_*e07 13 c++ templates
编译器是否可以跨多个翻译单元复制同一模板的实例化?
例如,如果你有一个使用std:vector<int>函数内部的a.cpp,而b.cpp使用同样的东西,那么std::vector<int>在最终的二进制文件中有两次冒险吗?
std:vector<int>
std::vector<int>
sha*_*oth 8
这可能在项目编译时发生,因此不同的.obj文件将具有相同实例化的副本.当链接二进制文件时,链接器将消除实例化的所有冗余副本,因此结束二进制文件将只有一个副本.
Xeo*_*Xeo 8
正如sharptooth所说,最终的二进制文件只包含一个实例.但是每次在编译单元中遇到模板时,模板仍然会被实例化.如果你想要一些编译速度,在C++ 0x中我们得到extern templates.它像普通extern变量一样工作,因为它必须在至少一个编译单元中指定,但编译器不会在此单元中实例化模板.有关更多信息,请参见此处和本草案(14.7.2 [temp.explicit]).
extern template
extern
归档时间:
14 年,7 月 前
查看次数:
1980 次
最近记录: