【发布时间】:2013-03-11 15:39:07
【问题描述】:
我正在阅读 C++ 标准草案 n3485 中的 14.7.2,它说:
2 显式实例化的语法是: 显式实例化:
externopt 模板声明显式实例化有两种形式:显式实例化定义和显式实例化声明。 显式实例化声明以
extern关键字开头。
看到模板声明和定义总是放在标题中,我从未见过在模板上使用extern 的声明。那个加粗的句子到底是什么意思?
为什么实例化会关心extern?
【问题讨论】:
-
"为什么实例化会关心 extern?" 因为这是用于显式实例化声明的语法。为什么编译器会忽略改变声明含义的有效语法?就像
extern int i;一样,它说“这是一个声明,而不是一个定义,程序中的某个地方会有一个定义”