Подтвердить что ты не робот

Что делает эта двоеточие в объявлении перечисления?

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

Я просмотрел этот код в EASTL:

enum : size_type {   // size_type = size_t                   
                npos     = (size_type)-1,
                kMaxSize = (size_type)-2
            };

Я никогда не сталкивался с объявлением enum. Что делает : в этом случае?

4b9b3361

Ответ 1

Это расширение Microsoft, которое позволяет выбрать базовый тип значений перечисления. Например, это позволяет вам указать, что значения без знака (компиляторы Microsoft обычно выбирают подписанные по умолчанию) или что они занимают только 8 или 16 бит (обычно Microsoft по умолчанию составляет 32 бита).

Синтаксис описан здесь: http://msdn.microsoft.com/en-us/library/2dzy4k6e(v=VS.100).aspx, но я не могу найти официальную документацию о том, что он на самом деле делает.

С++ 11 добавляет подобную функцию, но имеет немного другой синтаксис. В С++ 11 вы должны написать это следующим образом:

enum class MyEnum : size_type { .. values .. };

Ответ 2

В С++ 0x вы можете указать базовый тип для перечисления. В этом случае это будет size_type.

(И он может поддерживаться как расширение в других местах до С++ 0x, очевидно.)