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
Respuesta
De acuerdo con [class.temporary]
, si se compila, entonces sí, se extiende la vida útil del temporal.
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. –
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
Se compila perfectamente en SP1 VC10:
int && Get()
{
return 10;
}
const auto&& y=Get();
- 1. const referencia vinculante a un rvalue
- 2. Lo más importante para impartir al enseñar TDD
- 3. ¿Es "refs/heads/master" lo mismo que "refs/remotes/origin/master" en Git?
- 4. ¿Debe un constructor de movimiento tomar una referencia de const o non-const rvalue?
- 5. NO es la tecnología más importante ... ¿pero qué es esto?
- 6. ¿Es 'auto const' y 'const auto' lo mismo?
- 7. Sobrecarga de la función rvalue
- 8. MacOSX: obtener el título más importante ventana
- 9. ¿La certificación más importante en WPF?
- 10. Característica más importante en Visual Studio 2010
- 11. temporales C++ rvalue en plantilla
- 12. (RValue == lValue)
- 13. Clojure Vector de Refs
- 14. Rs refs en concurrencia
- 15. confusión de enlace de rvalue en C++
- 16. lValue a RValue conversiones
- 17. ¿Hay algo más importante que! Important en css?
- 18. C++ 0x rvalue referencias temporales y
- 19. matriz y RValue
- 20. literal y rvalue referencia
- 21. Algunas aclaraciones sobre las referencias rvalue
- 22. Me han pirateado, pero no sé cómo o, lo que es más importante, por qué. Código muy extraño inyectado
- 23. Corrección de const: const char const * const GetName const (// stuff);
- 24. const int = int const?
- 25. const vs new const
- 26. Cómo eliminar remoto origen/refs/heads/master
- 27. rvalue vector.push_back y copia-elisión
- 28. C++ 11: ¿Resumiendo sobre const, volátil, referencia de lval y punteros de función calificada de referencia de referencia de rvalue?
- 29. MIPS - ¿Es importante?
- 30. ¿Es "const LPVOID" equivalente a "void * const"?
¿Por qué necesita esto? 'const auto &' hace exactamente el mismo trabajo. – RedX
Puede modificar el temporal. –
En realidad, si miras los constructores de movimientos, eso es exactamente lo que hacen. Se unen a un valor r y lo modifican. – RedX