我想知道是否允许这样做:
namespace A {
inline namespace B {
int a;
}
int a;
}
void foo() {
A::a = 0; // clang 3.4 compiles, but gcc doesn't
}
标准规定:
最后,在通过显式限定符(3.4.3.2)在封闭命名空间中查找名称时,即使在封闭命名空间中存在该名称的声明,也将包括使用指令带入的内联命名空间的成员。
但是我不理解。
gcc 4.9
也不是clang 3.5
允许此代码,您可以在wandbox上尝试...但clang 3.4
可以,看起来像是一个错误。 - Shafik Yaghmour