verificar revista lecturas horas home gubernamental etica ethos certificacion cdpe acceso c++ reference const

c++ - revista - Devolución de objeto temporal y enlace a const referencia



revista ethos (1)

Esta es una característica de C ++. El código es válido y hace exactamente lo que parece hacer.

Normalmente, un objeto temporal solo dura hasta el final de la expresión completa en la que aparece. Sin embargo, C ++ especifica deliberadamente que vincular un objeto temporal a una referencia a const en la pila alarga la vida útil del temporal a la duración de la propia referencia, y evita así lo que de otro modo sería un error común de referencia colgante. En el ejemplo anterior, el temporal devuelto por foo() vive hasta la llave de cierre.

PD: Esto solo se aplica a las referencias basadas en pila. No funciona para referencias que son miembros de objetos.

Texto completo: GotW # 88: Un candidato para la "const más importante" por Herb Sutter .

Posible duplicado:
¿Una referencia constante prolonga la vida de un temporal?

Mi compilador no se queja acerca de la asignación de referencias temporales a const:

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 por foo es temporal y val puede señalar el objeto cuya vida ha terminado. ¿Lo permite el estándar C ++ y prolonga la vida útil del objeto devuelto?