我正在尝试理解使用嵌套名称说明符定义的枚举.标准说的是N4296:7.2/4 [dcl.enum]:
如果枚举键之后是嵌套名称说明符,则枚举说明符应引用先前在嵌套名称说明符所引用的类或命名空间中直接声明的枚举(即,既不继承也不引入 通过using-declaration),enum-specifier应出现在包含前一个声明的命名空间中.
那么,为什么以下示例有效呢?
#include <iostream>
namespace A
{
namespace B
{
enum E : int;
}
}
namespace C
{
using A::B::E;
}
enum C::E : int { x = 2 };
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
在namescape C,我们enum E通过使用声明声明,然后用枚举定义引用它.编译器可能抛出了错误,但事实并非如此.出了什么问题,哪里有误解?
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |