一般来说,C++ 标准库类型在设计时考虑了复制和移动语义。
标准库中是否定义了具有复制构造函数但没有移动构造函数的类型?
是的,标准库中有些类具有复制构造函数,但没有移动构造函数。
std::allocator
就是此类课程的一个例子。
但请注意,缺少移动构造函数并不意味着该对象不能用作右值。
它只是意味着在这种情况下将使用复制构造函数。
在某种程度上,您可以将移动构造函数视为该情况的简单优化,它始终可以回退到复制。
为了禁止将其用作拉值,移动构造函数需要显式地
delete
d。
我不知道有任何标准库类具有复制构造函数和
delete
d 移动构造函数。