GCC 4.9.2 không biên dịch đoạn mã này, nhưng clang 3.5.0 thì không. Cái nào đúng?GCC từ chối một tuyên bố đơn giản với một cơ sở enum; clang chấp nhận nó - đó là chính xác?
enum F : int { x, y, z};
int F;
enum F:int f = F::x;
đầu ra 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;
^
Tôi tin GCC là đúng, như một đơn giản tuyên bố (chứa xây dựng-type-specifier enum F
) không cho phép một enum-base (: int
), nhưng tôi muốn một số xác nhận về điều này.
Tiêu đề câu hỏi hữu ích ít nhất: -S –
Điều tôi có thể nói chắc chắn là 'F' không phải là' enum class' để 'F :: x' không hợp lệ. – GreenScape
@GreenScape, Bạn không cần một enum phạm vi để sử dụng toán tử phân giải phạm vi. – chris