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