为什么即使允许copy-elision发生,代码也需要具有可访问的复制/移动构造函数?

Wak*_*zil 5 c++ language-lawyer copy-elision c++14

Nicol Bolas 在SO的回答中写道:

在许多情况下允许复制省略.但是,即使允许,代码仍然必须能够工作,好像副本没有被删除.也就是说,必须有一个可访问的副本和/或移动构造函数.]

为什么有必要(在"保证副本省略"出现之前)代码维护复制/移动构造函数,即使允许复制省略发生?

为什么" 保证复制省略 "使程序员免于这些要求?

Dav*_*rtz 1

为了保证代码正常工作,对于不保证复制省略的每种情况,它必须有某种方法可以在不进行复制省略的情况下工作。