为什么没有复制构造函数 NRVO 不能工作

Why doesn't NRVO work without copy constructor

我正在阅读 Inside C++ Object Model 这本书,我得到了以下内容:

据我所知,NRVO 不会调用函数 class 的复制构造函数 returns.So 我不明白为什么 "This first verison of the program does not apply NRV optimization because of the absence of a copy constructor...".

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

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