标准在哪里定义了冲突声明?
例如,如果我在命名空间范围内有以下声明:
extern const int a;
extern int a;
这将是声明冲突的一个例子。
根据 [dcl.type],cv 限定符 const
是类型的一部分,因此const int x;
和 int x;
构成了变量 x
的不同声明。
然后我们到达 [over]/1,它指出:
当为同一作用域中的单个名称指定了两个或多个不同的声明时,该名称称为重载。通过扩展,同一作用域中声明相同名称但类型不同的两个声明称为重载声明。只能重载函数和函数模板声明;变量和类型声明不能重载。