2011-07-26 24 views

Respuesta

30

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

¿Por qué es útil? Bueno, significa que una plantilla de función puede pasar sus argumentos a otra función mientras conserva la naturaleza lvalue/rvalue de los argumentos de la función usando std :: forward. Esto se denomina "reenvío perfecto", evita la copia excesiva y evita que el autor de la plantilla tenga que escribir sobrecargas múltiples para las referencias lvalue y rvalue.

+5

Me lo ganaste :) –

+3

Merece la pena recordar los artículos que has marcado. ;) –

+1

que es un gran artículo, gracias. –

6

Citando Session Announcement: Adventures in Perfect Forwarding:

Perfeccionamiento de reenvío es una importante técnica de C++ 0x construido encima de referencias rvalue. Permite que la semántica de movimiento sea automáticamente aplicada, incluso cuando la fuente y el destino de un movimiento son separados por llamadas a funciones intermedias. Los ejemplos comunes incluyen constructores y funciones setter que reenvían argumentos que reciben a los miembros de datos de la clase que están inicializando o configurando, como así como funciones de biblioteca estándar como make_shared, que "perfecciona" sus argumentos al constructor de clase del objeto que debe crear el shared_ptr que se creará.

+1

El enlace que proporcionó en esta respuesta ya no existe ... – TheCrafter

+0

Acabo de llegar aquí. Tal vez esto le ahorre a alguien un poco de tiempo. https://cppandbeyond.wordpress.com/2011/04/25/session-announcement-adventures-in-perfect-forwarding/ – rfx

Cuestiones relacionadas