GCC 4.9.2 не компилирует этот фрагмент, но 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 верен, поскольку простая декларация (содержащая спецификатор специфицированного типа enum F
) не позволяет enum-base (: int
), но я хотел бы получить некоторое подтверждение.