练习时需要移动语义(如果有复制省略)

时间:2018-04-22 13:10:54

标签: c++ move-semantics copy-elision

我运行了一些示例程序并注意到移动函数(构造函数和赋值运算符)从未使用过,直到我使用禁用的副本省略(在GCC“-fno-elide-constructors”中)进行编译。所以问题是:

  • 在实践中(使用现代主流的C ++ 11/14或C ++ 17编译器)移动函数是否有用?
  • 如果需要移动函数,当需要用户实现移动函数而不是默认编译器生成函数时?

P.S。 AFAIK RVO在C ++ 17标准中是强制性的,但即使在最新版本的C ++ 11/14编译器中也没有实现RVO / NRVO(GCC版本5.3)。

0 个答案:

没有答案