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

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

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

c++ c++17 copy-constructor move-constructor
1个回答
3
投票

是的,标准库中有些类具有复制构造函数,但没有移动构造函数。

正如 Aykhan Hagverdili 上面评论的那样,

std::allocator
就是此类课程的一个例子。

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

为了禁止将其用作拉值,移动构造函数需要显式地

delete
d。

我不知道有任何标准库类具有复制构造函数和

delete
d 移动构造函数。

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