当复制省略发生时,实现将省略的复制/移动 (C++11 起) 操作的源和目标视为简单地引用同一对象的两种不同方式,并且该对象的销毁发生在后面的两个对象在没有优化的情况下被销毁的时间(除了,如果所选构造函数的参数是对对象类型的右值引用,则在目标被销毁时发生销毁)(C++17 起)。
对于像这样的简单情况A a = returnA();
,我可以理解该对象没有被销毁,而是像后来returnA()
的情况一样发生了销毁。A a;
我想不出一种相反的情况,即复制/移动操作的源首先被破坏。我还想要一个自 C++17 以来添加的语句的示例(当所选构造函数的参数是对对象类型的右值引用时例外)