- 有类成员定义了自己的拷贝构造函数且未定义移动构造函数,或者有类成员未定义自己的拷贝构造函数且编译器不能为其合成移动构造函数。移动赋值运算符的情况类似。
- 如果有类成员的移动构造函数或者移动复制运算符被定义为删除或是不可访问的
- 有类成员是const或者引用
此外,移动操作和合成拷贝控制成员(编译器生成的拷贝成员)之间的影响:如果一个类定义了一个移动构造函数/移动运算符,则该类的合成拷贝构造函数和拷贝赋值运算符会被定义为删除的,也就是说定义了一个移动操作的类也要定义自己的拷贝操作,否则拷贝操作会被默认定义为删除的。