【发布时间】:2015-01-30 21:06:24
【问题描述】:
我想知道这是否允许:
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)将包括内联命名空间的成员 由 using 指令引入,即使有声明 该名称在封闭的命名空间中。
但我无法得到它。
【问题讨论】:
-
gcc 4.9和clang 3.5都不允许此代码,您可以尝试 wandbox ...clang 3.4确实如此,似乎是一个错误 -
@ShafikYaghmour 谢谢你,Shafik。这是很棒的资源。是的,我在工作中尝试过这段代码,这里有 clang-3.4
标签: c++ c++11 namespaces language-lawyer