rit*_*ter 6 c++ move-constructor move-semantics c++11
在C++中,不能依赖从return语句调用的复制构造函数,因为标准中的一个特殊子句允许编译器省略对返回语句产生的复制构造函数的调用,即使复制构造函数有副作用.因此,编写复制构造函数除了复制构造实例之外还执行其他操作是不好的方式.
在C++ 11标准中是否有类似的语句允许编译器在某些情况下消除对移动构造函数的调用 - 如果是,那么这些情况是什么?
Copy-elision同样适用于移动构造,它是完全相同的条款,复制构造和移动构造的省略统称为"复制省略".
§12.8 [class.copy] p31
当满足一定的条件,实现允许忽略复制/ 移动建设一个类的对象,即使复制/ 移动的构造和/或析构函数的对象有副作用.[...]