AB
Size: a a a
AB
AZ
Т8
Т8
KK
O
enum Color { red = 0, blue = 2 };
Color color = static_cast<Color>(1);
KK
while(a--)
func(a++, a++)
А
enum Color { red = 0, blue = 2 };
Color color = static_cast<Color>(1);
AZ
AZ
p
O
KK
AZ
O
Color color = static_cast<Color>(-1)
или Color color = static_cast<Color>(3)
— точно UB...KK
/¯
enum ColorUnfixed /* no fixed underlying type */
{
red = 0x1,
yellow = 0x2
}
Therefore, 100 would be outside the range of ColorUnfixed, and the static_cast would produce an unspecified value before CWG 1766 and undefined behaviour after CWG 1766.
unscoped enum
без явного указания нижележащего типа, тут unspecified value/UB.AZ
Color color = static_cast<Color>(-1)
или Color color = static_cast<Color>(3)
— точно UB...enum_cast
в массыА
enum_cast
в массыO
unspecified value
звучит не лучше UB, имхо. Я вообще не понимаю, что такое unspecified value