在[namespace.udecl]/10中,您有以下示例:
namespace A {
int i;
}
namespace A1 {
using A::i;
using A::i; // OK: double declaration
}
void f() {
using A::i;
using A::i; // error: double declaration
}
Run Code Online (Sandbox Code Playgroud)
这个片段编译成clang.
以下程序是否符合c ++标准?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
Run Code Online (Sandbox Code Playgroud)
我用不同的编译器得到了不同的结果:
我没有在我的程序违反的c ++标准中找到任何规则.
如果程序格式正确,为什么visual studio会出错?
如果程序格式不正确,那么c ++标准中的规则是否会违反,为什么gcc不会出错?
我不是想让我的程序编译.我只是想根据c ++标准找出它是否格式正确,以及为什么我测试的两个编译器表现不同.