Lesen this Wikipedia-Artikel von einem der repliers auf die folgende Frage hingewiesen:Führt "Rückgabewertoptimierung" zu undefiniertem Verhalten?
C++ Copy constructor, temporaries and copy semantics
ich auf dieser Linie kam
auf dem Compiler Je, und die Einstellungen des Compilers, das daraus resultierende Programm kann eine der folgenden Ausgaben anzeigen:
Ist dies nicht für undefiniertes Verhalten geeignet? Ich weiß, dass der Artikel Depending on the compiler and settings
sagt, aber ich will das nur klären.
Es ist eine Implementierung definiert, in der der Compiler-Implementierer das Verhalten dokumentieren muss, dann ist hier nicht spezifiziert, was bedeutet, dass der Compiler tun kann, was auch immer er will, solange das "beobachtbare Verhalten" gleich bleibt. Dann gibt es undefiniertes Verhalten, was bedeutet, dass Sie einen Zustand in dem Programm eingegeben haben, in dem die Ausführung nicht mehr definiert ist. RVO ist ein Fall, in dem sich beobachtbares Verhalten ändern kann. – GManNickG