enum [tag] [: type] {enum-list} [declarator] в C ++ - это законно?

Я работаю с настраиваемым перечислимым типом в C ++, но у него не так много значений. Я хочу попытаться уменьшить размер, который они занимают, и слышал, что типы enum по умолчанию всегда целые числа . Затем я наткнулся на запись MSDN о перечислениях C ++ и нашел очень интересным следующий синтаксис:

enum [: type] {enum-list};

Конечно, он компилировался с тем, что я хотел (VS2008), когда я сделал следующее:

enum plane : unsigned char { xy, xz, yz };

Теперь , вы можете видеть из моих констант перечисления, что мне не нужно много места с точки зрения пространства - тип char без знака был бы идеальным для моего использования.

Однако, я должен сказать, я никогда не видел, чтобы эта форма использовалась где-нибудь в Интернете - большинство, кажется, даже не подозревает об этом. Я пытаюсь сделать этот код кроссплатформенным (и, возможно, для использования во встроенных системах), поэтому у меня возник вопрос ... Правильный ли это синтаксис C ++ или поддерживается только компилятором MSVC?

Изменить : Похоже, что эта функция теперь является частью C ++ 11 и выше и называется перечислениями с ограниченным объемом .

7
задан Breakthrough 5 July 2018 в 00:25
поделиться