память или ограниченный ресурс, такой как дескриптор файла. Но необходимость передать их обратно пахнет скорее «плохим дизайном», чем «полезным ограничением».
рограммировании на C ++ 03 мы не можем передать безымянный временныйT()
к функцииvoid foo(T&);
, Обычное решение - дать временному имя, а затем передать его следующим образом:
T v;
foo(v);
Теперь идет C ++ 0x - и теперь со ссылками на rvalue функция, определенная какvoid foo(T&&)
позволит мне пройти временный. Это подводит меня к моему вопросу: поскольку функция, которая принимает ссылку на rvalue, может принимать как ссылки на rvalue (безымянные временные ссылки), так и ссылки на lvalue (именованные неконстантные ссылки), есть ли какая-либо причина использовать ссылки lvalue в параметрах функции? Разве мы не должны всегда использовать значения r в качестве параметров функции?
Конечно, функция, которая принимает ссылку на lvalue,предотвращать звонящий от прохождения временного, но я не уверен, является ли это полезным ограничением.