【发布时间】:2012-01-24 09:37:31
【问题描述】:
我想在我正在处理的大型项目中减小 .obj 文件的大小(我知道链接器会删除重复的定义,但我想加快构建过程)。它们大小的原因之一是每个使用std::vector<double> 或std::vector<std::string> 的类最终都会编译该类的代码并将其放置在其.obj 文件中。我尝试显式实例化std::vector<double> 并使用extern template 声明,但它不起作用——Visual Studio C++ STL 中的std::vector 具有内联的所有方法。除了修改 STL 代码(我不会这样做),有什么方法可以强制编译器不要内联实例化方法并使用 std::vector<double> 的外部实例化版本?
【问题讨论】:
-
微软的C++编译器什么时候支持
extern template了?据我所知,它只是被忽略了。 -
不是。我在 VS 2008(带有 SP1)上尝试过它并且它有效。
标签: c++ visual-studio-2008 templates stl build