移动拷贝语义支持 编写步骤:
1. 将BOOST_COPYABLE_AND_MOVABLE(classname)写到类的私有区域;
2. 重载operator= 参数为BOOST_COPY_ASSIGN_REF(classname) 此赋值操作为平时写的operator=;
3. 重载拷贝构造函数与operator=参数为BOOST_RV_REF(classname) move的构造拷贝语operator=
当想使用移动语义时, 使用boost::move()进行参数传递
#include <boost/move/utility.hpp>
class Base
{
public:
Base();
Base(const Base& x);
Base(BOOST_RV_REF(Base) x);
Base& operator=(BOOST_RV_REF(Base) x); //move operator=
Base& operator=(BOOST_COPY_ASSIGN_REF(Base) x); //normal operator=
private:
BOOST_COPYABLE_AND_MOVABLE(Base);
};
class Derived : p