信任回报价值优化

Vik*_*ehr 6 c++ variable-assignment return-value-optimization

你如何使用返回值优化
是否有任何我可以信任现代编译器来使用优化的情况,或者我应该总是以安全的方式返回某种类型的指针/使用引用作为参数?

是否有任何已知的情况不能进行返回值优化?对我来说,返回值优化对于编译器来说相当容易.

jal*_*alf 8

每当启用编译器优化时(在大多数编译器中,即使禁用了优化),也会发生RVO.NRVO稍微不那么常见,但大多数编译器也会执行此优化,至少在启用优化时.

你说得对,优化相当容易的编译器执行,这是为什么编译器几乎总是这样做."无法制作"的唯一情况是优化不适用的情况:RVO仅在您返回未命名的临时时适用.如果要返回一个命名的局部变量,则应用NRVO,虽然编译器实现起来稍微复杂一些,但它是可行的,现代编译器没有问题.