Почему мне разрешено использовать неполный перечислимый класс?

Почему код ниже компилируется без ошибок?
c++
4 голоса | спросил Donqustix 10 J000000Monday17 2017, 17:53:31

1 ответ


0
Он компилируется, потому что компилятор знает во время компиляции размер ---- +: = 0 =: + ---- (который оказывается пустым).Вы видите это явно используя следующий синтаксис:Компилятор знает все, что нужно знать о ---- +: = 2 =: + ---- .---- +: = 3 =: + ---- является непрозрачным объявлением-перечислением, что также означает, что типом является ---- +: = 4 =: + ---- т.е. вы можете использовать -- +: = 5 =: + ---- на это.При необходимости вы можете указать список перечислителей в последующем переобъявлении (если, конечно, переобъявление не имеет другого базового типа, очевидно).Обратите внимание, что поскольку вы используете ---- +: = 6 =: + ---- использование ---- +: = 7 =: + ---- является обязательным.Строго типизированный enum не позволяет неявное преобразование в ---- +: = 8 =: + ----, но вы можете безопасно использовать ---- +: = 9 =: + ---- для них, чтобы получить их интегралстоимость.Они все еще ---- +: = 10 =: + ---- в конце концов.Цитирование cppreferenceНе существует неявных преобразований значений перечислителя с заданной областью в целочисленные типы, хотя static_cast может использоваться для получения числового значения перечислителя.Больше на эту тему здесь: Как автоматически конвертировать строго типизированный enum в int?
ответил Davide Spataro 10 J000000Monday17 2017, 18:01:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132