标准库中是否定义了具有复制构造函数而缺少移动构造函数的类型?

问题描述 投票:0回答:1

一般来说,C++ 标准库类型的设计同时考虑了复制和移动语义。标准库中是否定义了具有复制构造函数而缺少移动构造函数的类型?

c++ c++17
1个回答
0
投票

缺少移动构造函数并不意味着该对象不能用作右值。
它只是意味着在这种情况下将使用复制构造函数。
在某种程度上,您可以将移动构造函数视为该情况的简单优化,它始终可以回退到复制。

为了禁止使用移动语义,移动构造函数需要显式地

delete
d。

我不知道任何标准库类具有

delete
d 移动构造函数。
但正如 Aykhan Hagverdili 上面评论的那样,
std::allocator
是一个没有移动构造函数的类的示例(因此将回退到使用右值进行复制)。

话虽如此,如果您对标准库类感兴趣

© www.soinside.com 2019 - 2024. All rights reserved.