2013 主题演讲:Chandler Carruth:优化 C++ 的紧急结构
- 42:45
你不需要输出参数,我们在 C++ 中有值语义。...任何时候你看到有人争辩说 nonono 我不会按价值返回,因为复制成本太高,有人在优化器上说他们错了。好的?我还从未见过该论点正确的一段代码。...人们没有意识到值语义对优化器的重要性,因为它完全阐明了别名场景。
谁能把这个放在这个答案的上下文中:https ://stackoverflow.com/a/14229152
我听说不断重复,但是,对我来说,返回某些东西的函数是source。通过引用的输出参数从函数中取出该特征,并且从函数中删除这种硬编码特征允许人们在外部管理,而不是管理输出将如何存储/重用。
我的问题是,即使在那个 SO 答案的上下文中,有没有办法告诉,以其他等效方式重组代码,“现在看,这种方式的值语义不会丢失输出参数版本”,或者钱德勒的评论是针对某些人为情况的?我什至看到 Andrei Alexandrescu 在一次谈话中争论这一点,并告诉你不能逃避使用 by ref 输出以获得更好的性能。
有关 Andrei 评论的另一种看法,请参阅Eric Niebler:Out Parameters、Move Semantics 和 Stateful Algorithms。