C ++ 0x: ссылка rvalue по сравнению с неконстантным lvalue

При программировании на C ++ 03 мы не можем передать безымянный временный T () в функцию void foo (T &); . Обычное решение - дать временному объекту имя, а затем передать его следующим образом:

T v;
foo(v);

Теперь идет C ++ 0x - и теперь со ссылками на rvalue, функция, определенная как void foo (T &&) позволит мне пройти временно. Это подводит меня к моему вопросу: поскольку функция, которая принимает ссылку rvalue, может принимать как ссылки rvalue (безымянные временные), так и ссылки lvalue (называемые неконстантными ссылками), есть ли какие-либо причины для использования ссылок lvalue в параметрах функции? Разве мы не должны всегда использовать rvalue в качестве параметров функции?

Конечно, функция, которая принимает ссылку lvalue, не позволит вызывающей стороне передать временное, но я не уверен, что это ограничение полезно.

12
задан Channel72 23 December 2010 в 18:43
поделиться