Como de costumbre, el código primero:¿El reenvío perfecto en C++ 0x hace que reference_wrapper esté en desuso?
#include <functional>
using namespace std;
using namespace std::tr1;
void f(int& r) { r++; }
template<class F, class P> void g1(F f, P t) { f(t); }
template<class F, class P> void g2(F f, P&& t) { f(forward<P>(t)); }
int main()
{
int i = 0;
g1(f, ref(i)); // old way, ugly way
g2(f, i); // new way, elegant way
}
En C++ 98, que no tienen una buena manera de PEFECT hacia adelante a través de los parámetros de las funciones de plantilla. Entonces los gurús de C++ inventaron ref y cref para lograr ese objetivo.
Ahora que hemos tenido una referencia de valor r y un reenvío perfecto, ¿significa que deben rechazarse ref y cref y similares?