仅复制 parts/fields 个 class 个对象

Copying only certain parts/fields of class object

我有一个 class 像这样:

class ThreadPool
{
   thread *th;
   void evFn(void);
   unsigned i;
   queue<function<void()>> Queue;
   //mutex Queue_Mutex;
   //condition_variable Cond_Var;
}

我还有一个class A say,继承自ThreadPool。然后我有一个这样的 class A 对象数组,我把它们放在 <vector> 容器中。这里的问题是 mutexcondition_variable 不会被复制到容器中。在复制构造函数中有没有办法只复制 class ThreadPool 的某些部分并排除其余部分?

我想我正在寻找的答案是将 class 分为可移动和不可移动的部分。

struct B{};

class A
{
  // movable
  B b;
  // non-movable
  std::mutex m;

public:
  A(A&& a): b(std::move(a.b))
    // m is default-initialized.
  {

  }
};