【发布时间】:2021-12-28 03:23:01
【问题描述】:
以下代码:
namespace { constexpr int x = 1; }
namespace X { namespace { constexpr int x = 2; } }
using namespace X;
int main() {
static_assert( ::x == 1 );
}
在 MSVC 中成功编译,它更喜欢第一个匿名命名空间来查找 ::x 而不是 X::(anonymous namespace)。
但是,由于选择不明确,GCC 和 Clang 都拒绝了该代码。演示:https://gcc.godbolt.org/z/zPEGzGar3
哪个编译器在这里?
【问题讨论】:
标签: c++ namespaces language-lawyer