根据c ++标准,以下程序是否格式良好或格式不正确?
namespace X { int i; }
namespace Y { using X::i; }
int main() { using X::i; using Y::i; }
Run Code Online (Sandbox Code Playgroud)
我用不同的编译器得到了不同的结果:
我不想修复这个程序让它在GCC上编译.我只是想知道c ++标准对此有何看法以及为什么三个编译器的行为不同.此外,我想如果这是任何这些编译器中的错误的结果.
namespace A{
int i;
}
int main(){
using A::i;
using A::i;
}
Run Code Online (Sandbox Code Playgroud)
VS2010 - 编译好
gcc(ideone) - 编译好
Comeau - 给出错误""ComeauTest.c",第10行:错误:"i"已经在当前范围内使用A :: i声明;"
$ 7.3.3/8 - "使用声明是一种声明,因此可以在允许多个声明的情况下(并且仅在何处)重复使用."
这里的例子表明代码确实是不正确的.
那么,这是GCC和VS2010中的一个错误吗?
编辑2:
删除using directives与手头查询无关的倍数.