GCC 4.9.2 nie kompiluje tego opisu, ale robi to clang 3.5.0. Który jest prawidłowy?GCC odrzuca prostą deklarację z bazą enum; clang to akceptuje - co jest poprawne?
enum F : int { x, y, z};
int F;
enum F:int f = F::x;
wyjściowego 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;
^
wierzę GCC jest poprawny, w prosty zgłoszenia (zawierającego opracowany TYPU specyfikatora enum F
) nie pozwalają na enum bazy (: int
), ale chciałbym potwierdzić to.
Najmniej przydatne pytanie: -S –
Co mogę powiedzieć na pewno, że 'F' nie jest' enum class', więc 'F :: x' jest nieprawidłowe. – GreenScape
@ Zielony ekran, do korzystania z operatora rozdzielczości nie jest konieczne wyliczenie z zakresem. – chris