Здравствуйте, 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
см. последний комментарий.