我认为N4140中的§3.5/ 3子弹点(3.2)这句话"以前没有宣布有外部联系"是多余的

Leo*_*eon 0 c++ linkage language-lawyer c++14

§3.5[basic.link]/3(我的重点):

具有命名空间作用域(3.3.6)的名称具有内部链接(如果它的名称)

(3.1) - 显式声明为static的变量,函数或函数模板; 要么,

(3.2) - 一个非易失性变量,显式声明为const或constexpr,既未显式声明为extern,也未声明为具有外部链接 ; 要么

(3.3) - 匿名工会的数据成员.

我认为(3.2)中粗体字符中的短语是多余的,除非有人能给出一个显式声明const但未声明的变量的例子extern,以及之前声明external linkage的变量,以及结果变量具有的变量external linkage.

小智 5

这很简单:

extern const int i; // typically in header file
const int i = 0; // typically in source file
Run Code Online (Sandbox Code Playgroud)

你问题中的句子确保这里没有冲突.第二个声明没有指定不同的不兼容链接,它只是继承了前一个声明中的链接,而它是你问题中实现这一点的单词.