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?