C++11外部模板

时间:2024-06-23 19:32:56

C++11之外部模板

  在标准C++中,只要在编译单元内遇到被完整定义的模板,编译器都必须将其实例化(instantiate)。这会大大增加编译时间,特别是模板在许多编译单元内使用相同的参数实例化。看起来没有办法告诉C++不要引发模板的多次实例化。

  C++11将会引入外部模板这一概念。C++已经有了强制编译器在特定位置开始实例化的语法:

  template class std::vector<MyClass>;

  而C++所缺乏的是阻止编译器在某个编译单元内实例化模板的能力。C++11将简单地扩充前文语法如下:

  extern template class std::vector<MyClass>;

  这样就告诉编译器不要在该编译单元内将该模板实例化。

参考:http://zh.wikipedia.org/wiki/C++0x