标准在哪里定义了相互冲突的声明是什么?
例如,如果我在命名空间范围内具有以下声明:
extern const int a;
extern int a;
这将是冲突声明的一个例子。
答案 0 :(得分:1)
根据[dcl.type], cv-qualifier const
是该类型的一部分,因此const int x;
和int x;
构成了不同的声明变量x
。
然后我们到达[over]/1,其中说明:
如果为同一范围内的单个名称指定了两个或更多不同的声明,则称该名称已重载。通过扩展,在同一范围内声明相同名称但具有不同类型的两个声明称为重载声明。只有函数和函数模板声明可以重载;变量和类型声明不能重载。