2013 Keynote: Chandler Carruth: оптимизация появляющихся структур С++
- 42:45
Вам не нужны выходные параметры, у нас есть семантика значений в С++.... В любое время, когда вы видите, что кто-то утверждает, что nonono я не собираюсь возвращать по стоимости, потому что копия будет стоить слишком много, кто-то работает над оптимизатором, говорит, что они ошибаются. Отлично? Я еще не видел фрагмента кода, где этот аргумент был правильным.... Люди не понимают, насколько важна семантика значения для оптимизатора, потому что она полностью разъясняет сценарии псевдонимов.
Может ли кто-нибудь поставить это в контексте этого ответа: qaru.site/info/94440/...
Я слышу, что повторяюсь снова и снова, но для меня функция, возвращающая что-то, является источником. Выходные параметры по ссылке принимают эту характеристику из функции, и удаление такой жестко кодированной характеристики из функции позволяет вместо этого управлять внешним, как вывод будет сохранен/повторно использован.
Мой вопрос, даже в контексте этого SO-ответа, есть способ рассказать, реструктурируя код каким-то другим эквивалентным способом, "ok now see, value semantics таким образом не теряет для версии выходного параметра", или комментарии Чандлера были специфическими для некоторых надуманных ситуаций? Я даже видел, как Андрей Александреску спорил об этом в беседе и говорил, что вы не сможете избежать использования ref ref для лучшей производительности.
Для другого взгляда на комментарии Андрея см. Эрик Ниблер: параметры вывода, перемещение семантики и алгоритмы состояния.