为什么NRVO没有复制构造函数

时间:2017-03-07 10:34:43

标签: c++ nrvo

我正在阅读 Inside C ++对象模型这本书,我得到了以下内容:
enter image description here

据我所知,NRVO不会调用函数返回的类的复制构造函数。所以我不明白为什么"该程序的第一个版本不适用于NRV优化,因为没有复制构造函数......"。

1 个答案:

答案 0 :(得分:0)

这个想法是代码既适用于执行优化的编译器,也适用于那些不执行优化的编译器。如果复制了对象,显然必须定义并访问复制构造函数。这就是要求,即使是那些可能并不总是使用它的编译器。

如评论中所述,C ++ 17将强制优化,然后可以放宽要求。

相关问题