Oracle Solaris Studio 12.2:C++ 用户指南

4.6 将 enum 名称作为作用域限定符

因为 enum 声明并不引入作用域,所以 enum 名称不能作为作用域限定符来使用。例如,以下代码是无效的。


enum E {e1, e2, e3};
int i = E::e1; // invalid: E is not a scope name

要编译该无效代码,请使用 -features=extensions 选项。-features=extensions 选项指示编译器在作用域限定符是 enum 类型的名称的情况下忽略该作用域限定符。

要使代码有效,请删除无效的限定符 E::


注 –

使用该选项提高了排字错误的可能性,产生了编译没有错误消息的错误程序。