Avatar ·

¿Para qué sirve std::forward y qué problemas resuelve en C++?

Estoy estudiando C++11 y me encontré con std::forward. Leí la documentación, pero no termino de entender para qué sirve. Tengo una función template que toma un argumento por referencia universal (T&&) y lo pasa a otra función: ```cpp template void wrapper(T&& arg) { target(arg); // simplemente pasamos } ``` Pero cuando paso un rvalue (por ejemplo, un objeto temporal), target lo recibe como lvalue, porque arg tiene nombre. Debido a esto, ocurre una copia en lugar de un movimiento. He oído que std::forward resuelve este problema, pero no entiendo cómo. ¿Pueden explicar con ejemplos: qué problemas resuelve exactamente std::forward y cómo usarlo correctamente? Preferiblemente con código para que se vea claramente la diferencia. ¡Gracias! <<>>

Qué es std::forward y para qué sirve

std::forward es una herramienta para perfect forwarding de argumentos en funciones template. Su objetivo principal es preservar la "categoría de valor" (value ca