Hat sich der C ++ - Standard in Bezug auf die Verwendung von unbestimmten Werten und undefiniertem Verhalten in C ++ 14 geändert?

Wie in abgedecktEnthält die Initialisierung eine Umwandlung von lWert in rWert? Istint x = x; UB? Der C ++ - Standard hat ein überraschendes Beispiel im Abschnitt3.3.2 Erklärungspunkt in dem einint wird mit einem eigenen unbestimmten Wert initialisiert:

int x = 12;
{ int x = x; }

Hier wird das zweite x mit seinem eigenen (unbestimmten) Wert initialisiert. -Ende Beispiel ]

Welche Johannes-Antwort auf diese Frage anzeigt, ist undefiniertes Verhalten, da es eine Umwandlung von lWert in rWert erfordert.

Im neuesten Standardentwurf von C ++ 14N3936 welches gefunden werden kannHier Dieses Beispiel wurde geändert in:

unsigned char x = 12;
{ unsigned char x = x; }

Hier wird das zweite x mit seinem eigenen (unbestimmten) Wert initialisiert. -Ende Beispiel ]

Hat sich in C ++ 14 etwas in Bezug auf unbestimmte Werte und undefiniertes Verhalten geändert, das diese Änderung im Beispiel ausgelöst hat?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage