Обычный cpp совет для выходных параметров: «избегайте передачи выходных параметров по изменяемой ссылке, вместо этого возвращайте по значению». Теперь, если у нас есть случай, когда мы хотим изменить сам объект, например,
string s = "whatever";
//maybe in a loop
s = modify(s);
, то выглядит так, что функция string modify (string)
всегда превосходит такую функцию, как modifyInPlace(string &)
. Есть ли способ обойти эту проблему? Есть ли фундаментальная причина, почему это никогда не может быть решено? Я думаю, что семантика принятия по значению, возврата по значению безопаснее и понятнее.
Пример сравнительного измерения: http://quick-bench.com/-XZqOZw-X739tlcOI8vau8DU24w