2011-07-01 11 views
5

En C++ 03 puede usar el truco const& (o "const más importante") para extender la vida útil de un temporal a la duración de la referencia. Mi pregunta es, en C++ 0x, ¿este comportamiento se extiende a las referencias rvalue? Es decir auto&& x = someFunction();Lo más importante const & rvalue refs

+0

¿Por qué necesita esto? 'const auto &' hace exactamente el mismo trabajo. – RedX

+0

Puede modificar el temporal. –

+1

En realidad, si miras los constructores de movimientos, eso es exactamente lo que hacen. Se unen a un valor r y lo modifican. – RedX

Respuesta

4

De acuerdo con [class.temporary], si se compila, entonces sí, se extiende la vida útil del temporal.

+1

No se menciona explícitamente las referencias de valor real, aunque supongo que eso está implícito en el término "referencias". Me hace sentir incómodo, sin embargo. –

+2

Ver §8.3.2/2: Un tipo de referencia que se declara usando & se llama referencia de valor l, y un tipo de referencia que se declara usando && se denomina referencia rvalue. (...) Excepto donde se indica explícitamente, son semánticamente equivalentes y se conocen comúnmente como referencias. – Vitus

0

Se compila perfectamente en SP1 VC10:

int && Get() 
{ 
    return 10; 
} 

const auto&& y=Get(); 
Cuestiones relacionadas