根据C ++ 11标准默认转移构造仅产生,如果:
- X没有一个用户声明拷贝构造函数,
- X没有一个用户声明的拷贝赋值运算符,
- X没有一个用户声明的举动赋值运算符,
- X没有一个用户声明的析构函数,和
- 此举构造不会被隐式定义为删除。
我还可以明确违约呢? 似乎在铛正常工作。 像这样的例子:
class MyClass {
private:
std::vector<int> ints;
public:
MyClass(MyClass const& other) : ints(other.ints) {}
MyClass(MyClass&& other) = default;
};