【发布时间】:2019-04-04 13:52:06
【问题描述】:
我有一个带有已删除复制构造函数的类,我正在尝试将互斥锁成员放入如下内容:
struct A {
A(const A &other) = delete;
A& operator=(const A &other) = delete;
A(A&& other) = default;
A& operator=(A &&other) = default;
std::mutex lock;
};
编译器抱怨我试图调用已删除的复制构造函数,我总结这是由于 std::mutex 类型是不可移动的。如何让互斥锁成员以最少的麻烦与移动构造函数一起玩?我实际上并不想将互斥体成员本身移动到新构造的对象中,并且实际上希望每个移动的对象只构造它自己的互斥体
【问题讨论】:
-
我不确定
default移动构造函数/赋值是否是个好主意。lock不应该负责保护一些东西吗?移动构造/分配不应该考虑移动对象的lock吗?