【发布时间】:2017-11-12 13:49:54
【问题描述】:
我正在阅读官方的 CPPCoreGuidelines 以正确理解什么时候依靠 RVO 可靠,什么时候不可靠。 在 F20 处写着:
如果一种类型的移动成本很高(例如,数组),请考虑 在免费存储上分配它并返回一个句柄(例如, unique_ptr),或将其传递给非常量目标对象的引用 填充(用作输出参数)
我知道非 STL 类型没有针对移动进行优化,但是我怎样才能轻松检测到移动成本高昂的其他类型,所以我不会在它们上使用 RVO?
【问题讨论】:
-
RVO 通常是一种优化。你为什么不想让它发挥作用?
-
“非 STL 类型未针对移动进行优化” - 除非您编写移动 c'tor/assignment 并且它具有运行时优势。如果可以的话,没有什么能阻止您优化您的类型以具有移动语义。