В С++ 11 есть ли необходимость передавать ссылку на объект, который будет принимать выходные данные функции?

До C++11, если бы у меня была функция, работающая с большими объектами, я инстинктивно писал функции с таким прототипом.

void f(A &return_value, A const &parameter_value);

(Здесь return_value — это просто пустой объект который получит вывод функции. A — это просто некоторый класс, который является большим и дорогим для копирования.)

В C++11, использующем преимущества семантики перемещения, рекомендация по умолчанию (насколько я понимаю) просто:

A f(A const &parameter_value);

Есть ли необходимость делать это по-старому, передавая объект для хранения возвращаемого значения?

5
задан Rob Lachlan 16 June 2012 в 04:54
поделиться