枚举通过声明引入

5 c++ enums

我正在尝试理解使用嵌套名称说明符定义的枚举.标准说的是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)

DEMO

namescape C,我们enum E通过使用声明声明,然后用枚举定义引用它.编译器可能抛出了错误,但事实并非如此.出了什么问题,哪里有误解?

Lig*_*ica 2

显然,由于您给出的原因,这是一个编译器错误。
有趣的是,Clang 3.5.0 和 GCC 4.9 都接受该程序。