У меня есть код, содержащий строку
enum struct cols: int8_t {red, blue, green};
Когда я компилирую это, я получаю ошибки:
test.cpp:4:1: warning: elaborated-type-specifier for a scoped enum must not use the 'struct' keyword
enum struct cols: int8_t {red, blue, green};
^
test.cpp:4:13: error: use of enum 'cols' without previous declaration
enum struct cols: int8_t {red, blue, green};
^
test.cpp:4:17: error: expected unqualified-id before ':' token
enum struct cols: int8_t {red, blue, green};
^
Однако, если я поставлю строку
#include <iostream>
вверху он компилируется без жалоб.
Есть ли этому объяснение?
(Я использую g++ 4.9.4, но это поведение также отображается в g++ 5.4.0.)