До C++11, если бы у меня была функция, работающая с большими объектами, я инстинктивно писал функции с таким прототипом.
void f(A &return_value, A const ¶meter_value);
(Здесь return_value — это просто пустой объект который получит вывод функции. A — это просто некоторый класс, который является большим и дорогим для копирования.)
В C++11, использующем преимущества семантики перемещения, рекомендация по умолчанию (насколько я понимаю) просто:
A f(A const ¶meter_value);
Есть ли необходимость делать это по-старому, передавая объект для хранения возвращаемого значения?