1

我正在阅读Inside C++ Object Model一书,我得到了以下内容:
在此处输入图像描述

据我所知,NRVO不会调用函数返回的类的复制构造函数。所以我不明白为什么“由于缺少复制构造函数,该程序的第一个版本不应用NRV优化...... ”。

4

1 回答 1

0

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

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

于 2017-03-07T11:37:24.570 回答