相关疑难解决方法(0)

使用声明链接的程序在MSVS和clang上编译但在GCC上编译

根据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 ++标准对此有何看法以及为什么三个编译器的行为不同.此外,我想如果这是任何这些编译器中的错误的结果.

c++ declaration using-declaration language-lawyer

19
推荐指数
2
解决办法
376
查看次数

命名空间使用声明(GCC/VS2010中的错误)?

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与手头查询无关的倍数.

c++ namespaces using-declaration

12
推荐指数
1
解决办法
595
查看次数