Chu*_*dad 12 c++ namespaces using-declaration
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与手头查询无关的倍数.
Joh*_*itb 11
您所引用的示例已知不一致.该委员会尚未解决此问题.
那么,这是GCC和VS2010中的一个错误吗?
我不认为这是GCC/VS2010/Clang或Comeau中的任何一个错误.它似乎是C++标准中的一个错误.在这些情况下,编译作者必须在最可行的事情上下定决心.如果删除有问题的示例,则3.3/4表示示例有效:"在单个声明性区域中给出一组声明,每个声明区域指定相同的非限定名称,......它们都应引用同一个实体,或全部参考功能和功能模板;或......".
问题出现了,正如相关问题所讨论的那样,7.3.3/8在何时提到"声明"时,委员会没有达成共识.因此,在此之前3.3/4适用于GCC/VS2010和Clang,而Comeau则选择使用其他一些语义.
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |