4 核心语言编译时性能增强
4.1 外部模板
在标准C++里面,只要遇到一个完整的模板,编译器必须对它进行实例化,这显著地增加了编译时间,特别是模板使用相同参数在多个地方被实例化。没有办法告诉C++不要去实例化某个模板。
C++0x引入了外部模板这个主意。C++已经有语法可以强迫编译器去在一个特定位置去进行实例化:
template class std::vector<MyClass>;
而C++缺乏一种能力去阻止编译器在某个地方去实例化。C++0x简单地扩展这个语法为:
extern template class std::vector<MyClass>;
这就告诉编译器不要在这个位置去进行实例化。