Duplicar posibles:
Does a const reference prolong the life of a temporary?objeto temporal y vinculante para referencia constante
Mi compilador no se queja acerca de la asignación temporal de referencia constante:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
Por qué ? Pensé que la cadena devuelta desde foo
es temporal y val puede señalar al objeto cuya duración ha finalizado. ¿Lo permite el estándar C++ y prolonga la vida útil del objeto devuelto?
Sí, la vida útil temporal se prolonga siempre que se trate de una referencia ** const **. – chris
Eso no es exactamente un duplicado de 2784262, que (debería) tratar el caso donde la referencia es un miembro de la clase. El comportamiento es diferente. – aberaud
@aberaud no solo no es un duplicado, es una pregunta mucho mejor que estoy contento de haber encontrado. – dashesy