¿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