Как описано в разделе "Включает ли инициализация преобразование lvalue в rvalue"? Является ли int x = x;
UB? Стандарт C++ содержит удивительный пример в разделе 3.3.2
Точка объявления, в которой int
инициализируется своим собственным неопределенным значением:
int x = 12; { int x = x; }
Здесь второй x инициализируется своим собственным (неопределенным) значением. - конец примера]
То, на что Йоханнес отвечает на этот вопрос, является неопределенным поведением, так как требует преобразования lvalue в rvalue.
В последнем C++ 14 проекте стандарта N3936
который можно найти здесь, этот пример был изменен на:
unsigned char x = 12; { unsigned char x = x; }
Здесь второй x инициализируется своим собственным (неопределенным) значением. - конец примера]
Изменилось ли что-то в C++ 14 в отношении неопределенных значений и неопределенного поведения, которое послужило причиной этого изменения в примере?