【发布时间】:2011-05-14 05:45:08
【问题描述】:
namespace A{
int i;
}
int main(){
using A::i;
using A::i;
}
VS2010 - 编译良好p>
gcc (ideone) - 编译良好p>
Comeau - 给出错误“ComeauTest.c”,第 10 行:错误:“i”已在当前范围内声明 使用 A::i;"
$7.3.3/8 - “使用声明是 声明,因此可以使用 反复在哪里(并且只在哪里) 允许多个声明。”
上面的例子表明代码确实格式错误。
那么,这是 GCC 和 VS2010 中的错误吗?
编辑 2:
删除多个using directives,因为它与手头的查询无关。
【问题讨论】:
-
我的理解是它应该是 Comeau 中的一个错误,而不是 MSVC/GCC,出于同样的原因,这很好:
int main(){ extern int i; extern int i;}。显然我错过了一些简单的东西。 -
@GMan :检查一次
7.3.3/8。 -
@Prasoon:没有比这更直接的了,谢谢。
-
@Alf: 我同意 [OneMoreCharNeededButI'llPutThisLongFillerTextInInsteadBecauseIAmIrritated]
-
@GMan 我仍然认为 MSGC/GCC/Clang 没有它错误。我不认为有人可以争辩说 Comeau 错了,因为显然意图是错了,但是说其他人错了对我来说似乎有点太重了(因为意图基于什么规范性文本在?)。请参阅我对@Jame 答案的评论。
标签: c++ namespaces using-declaration