最佳答案
在决定重新分配时是移动还是复制元素之前,向量似乎会检查 move 构造函数是否被标记为 nobut。默认的 move 构造函数是否定义为 noother?我看到了下面的文档,但它没有指定 this. http://en.cppreference.com/w/cpp/language/move_constructor
隐式声明的 move 构造函数
如果没有用户定义的移动 为类类型(结构、类或联合)提供了构造函数, 以下所有内容都是正确的: 没有用户声明的副本 构造函数没有用户声明的复制赋值运算符 没有用户声明的移动赋值操作符 隐式声明的 move 构造函数是用户声明的析构函数 由于下一节中详细介绍的条件,没有定义为删除 然后编译器将一个 move 构造函数声明为内联公共 具有签名 T: : T (T & &)的类成员 多个 move 构造函数,例如 T: : T (const T & &)和 T: : T (T & &)。 如果存在一些用户定义的 move 构造函数,则用户仍然可以 强制生成隐式声明的 move 构造函数 关键字默认值。