Re: enum class value initialization
От: Zhendos  
Дата: 26.02.22 20:20
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Если я правильно понимаю, "ec is value-initialized" означает инициализацию вида errc{}.

BFE>Внимание вопрос: какое значение будет у ec в случае успешного выполнения?
BFE>Я вижу возможные варианты:
BFE>1) unspecified
BFE>2) undefined behavior
BFE>3) 0
BFE>4) errc::address_family_not_supported

Я думаю (3):
https://stackoverflow.com/questions/53897991/enum-class-default-initialization

Как описанно по ссылки auto x = errc() эквиванетно auto x = static_cast<errc>(0).

BFE>Так как у errc не указан underlying type, то если я правильно помню, присваивание любого значения лежащего вне перечисленных — это undefined behavior. Это так? Если так, то либо у address_family_not_supported == 0, либо errc{} != 0.


По идее только если значение не может уместиться в "underlying type" то это UB, а 0 всегда может уместиться
в "underlying type":

https://stackoverflow.com/questions/33812998/is-it-allowed-for-an-enum-to-have-an-unlisted-value

см. последний комментарий.
Отредактировано 26.02.2022 20:21 Zhendos . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.