C ++ 0x: valor de referencia de valor versus valor no constante

Al programar en C ++ 03, no podemos pasar un temporal sin nombreT() a una funciónvoid foo(T&);. La solución habitual es darle un nombre al temporal y luego pasarlo como:

T v;
foo(v);

Ahora, viene C ++ 0x, y ahora con referencias rvalue, una función definida comovoid foo(T&&) me permitirá pasar un temporal. Lo que me lleva a mi pregunta: dado que una función que toma una referencia de rvalue puede tomar tanto referencias de rvalue (temporales sin nombre) como referencias de lvalue (referencias no const nombradas), ¿hay alguna razón para usar referencias de lvalue en los parámetros de la función? ¿No deberíamos usar siempre valores como parámetros de función?

Por supuesto, una función que toma una referencia de valorevitar la persona que llama no pasa un temporal, pero no estoy seguro de si es una restricción útil.

Respuestas a la pregunta(2)

Su respuesta a la pregunta