lettura this Wikipedia articolo ha sottolineato da uno dei repliers alla seguente domanda:L'ottimizzazione del valore di ritorno causa un comportamento indefinito?
C++ Copy constructor, temporaries and copy semantics
mi sono imbattuto in questa linea
A seconda del compilatore, e le impostazioni del compilatore, il programma risultante può visualizzare una delle seguenti uscite:
Questo non si qualifica per comportamento non definito? So che l'articolo dice Depending on the compiler and settings
ma voglio solo chiarirlo.
Esiste l'implementazione, in cui l'implementatore del compilatore deve documentare il comportamento, quindi qui non è specificato, il che significa che il compilatore può fare tutto ciò che vuole purché il "comportamento osservabile" rimanga lo stesso. Poi c'è un comportamento indefinito, il che significa che hai inserito uno stato nel programma in cui la sua esecuzione non è più definita. RVO è un caso in cui il comportamento osservabile è autorizzato a cambiare. – GManNickG