2013-03-11 90 views
3

我读的C++标准n3485草案14.7.2和它说:显式实例声明与EXTERN

2为显式实例的语法为: 显式实例: extern选择模板声明

显式实例化有两种形式:显式实例化定义和显式实例化声明。 显式实例化声明以extern关键字开头。

鉴于模板声明和定义总是放在一个头,我从来没有见过一个模板,extern声明。粗体句子究竟意味着什么?

另外为什么会关心一个实例化extern

+0

“_Also为什么会实例化关心extern?_”因为这是用于显式实例化声明的语法。为什么编译器会忽略改变decaration含义的有效语法?像'extern int i';'它说“这是一个声明,而不是一个定义,在程序中会有一个定义” – 2013-03-11 15:57:38

回答

6

它告诉编译器不要在此TU中实例化该模板。

请注意,如果您希望代码实际链接,它应该在一个TU中实例化(不含extern位)。