lectura this artículo de Wikipedia señalado por uno de los respondedores a la siguiente pregunta:¿La "optimización del valor de retorno" causa un comportamiento indefinido?
C++ Copy constructor, temporaries and copy semantics
me encontré con esta línea
Dependiendo del compilador, y la configuración del compilador, el programa resultante puede mostrar cualquiera de las siguientes salidas:
¿Esto no califica para un comportamiento indefinido? Sé que el artículo dice Depending on the compiler and settings
, pero solo quiero aclarar esto.
Hay una implementación definida, en la cual el implementador del compilador debe documentar el comportamiento, luego aquí no se especifica, lo que significa que el compilador puede hacer lo que quiera siempre que el "comportamiento observable" permanezca igual. Luego hay un comportamiento indefinido, lo que significa que ha ingresado un estado en el programa donde su ejecución ya no está definida. RVO es un caso donde el comportamiento observable puede cambiar. – GManNickG