Удивительно, но вы можете поместить туда другие decl-спецификаторы .
Это прекрасно компилируется в VS2008:
auto const enum TestEnum {
Why,
Does
};
register volatile enum TestEnum2 {
This,
Work
};
Но это не имеет никакого смысла:)
Я подозреваю, что проблема здесь заключается в разборе, потому что код, подобный этому:
enum TestEnum3 { Hello, World }; // Define enum
enum TestEnum3 x = World; // Use enum
Может также быть записан как:
enum TestEnum3 { Hello, World } x = World; // Define and use enum.
Интересно, я замечаю, если вы делаетеэто в VS2008:
enum TestEnum3 { Hello, World };
const enum TestEnum3 e3 = World;
const enum TestEnum4 { F, M, L } e4 = F;
e3 = Hello; // error C2166: l-value specifies const object (Good!)
e4 = M; // NO ERROR here though - why?
Таким образом, они не эквивалентны, как в случае TestEnum4
, который, кажется, отбрасывает спецификатор decl const
.Все очень странно.