【发布时间】:2015-07-03 04:30:17
【问题描述】:
GCC 4.9.2 不会编译这个 sn-p,但 clang 3.5.0 会。哪一个是正确的?
enum F : int { x, y, z};
int F;
enum F:int f = F::x;
GCC 输出:
main.cpp:3:12: error: expected ';' or '{' before 'f'
enum F:int f = F::x;
^
main.cpp:3:12: error: expected class-key before 'f'
main.cpp:3:14: error: invalid type in declaration before '=' token
enum F:int f = F::x;
^
main.cpp:3:16: error: 'F' is not a class, namespace, or enumeration
enum F:int f = F::x;
^
我相信 GCC 是正确的,因为 simple-declaration(包含详细类型说明符 enum F)不允许 enum-base(@ 987654326@),但我想确认一下。
【问题讨论】:
-
最没有帮助的问题标题:-S
-
我可以肯定地说
F不是enum class所以F::x是无效的。 -
@GreenScape,你不需要一个作用域枚举来使用作用域解析运算符。
-
@KerrekSB 写评论的时间本可以花在修复标题上。
-
@PeterSchneider:你无法修复整个世界 :-( ......至少不是每天都这样!(但抱怨它很便宜。)
标签: c++ c++11 enums language-lawyer c++14