似乎有很多关于编译器何时执行 RVO 或为什么在这样那样的情况下不执行它的问题。
在阅读http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/之后 ,我似乎也无法理解它。
基本上,编译器似乎“通常”会执行某种优化,但在极少数情况下它不能。
如果我正确理解 Dave Abrahams 的文章,他并不真正建议按价值返回,除非是为了更好的可读性。对我来说,这表明为了可读性和一致性,始终传递大输出值的引用可能是一个好主意。
那么我应该传递引用以避免复制还是有什么方法可以找出编译器是否会优化掉一个副本?
此外,找出编译器是否会以特定方式进行优化的努力实际上比仅仅通过引用传递要少吗?