你如何去使用的返回值优化的?点击 是否有一个地方我可以信任的现代编译器使用优化,或者我应该经常去的安全方法和返回某个类型的指针/使用引用作为参数的任何情况下?

是否有其中返回值优化不能由任何已知的情况下?, 在我看来,返回值优化将是相当容易的编译器执行。

有帮助吗?

解决方案

每当编译器优化被允许(并且在大多数的编译器,即使当优化是停用的),RVO将发生。 NRVO是不太常用的,但大多数的编译器将执行该优化,以及,至少在优化被启用。

你是对的,最优化的的相当容易的编译器执行,这是为什么编译器几乎总是这样做。它“不能做”的唯一情况是在优化不适用的:当你返回一个无名临时RVO才适用。如果你想返回名为局部变量,NRVO适用代替,而它是稍微复杂的编译器来实现,这是可行的,而现代的编译器都没有问题了。

scroll top