假设我有一个只有一个构造函数的类:

class T {
 public:
  T(BigClass&& big) : big(std::move(big)) {}
  ...

  SomeBigClass
};

在大多数地方,构造函数是在临时对象上调用的,但在一个地方,我需要制作 BigClass 的显式拷贝,因为它不是临时的,将在循环中多次使用:
void foo(const BigClass& big) {
  while (...) {
    T t(std::make_a_copy(big));
    ...
  }
}

在 C++11 或 C++14 中,std::move 是否有任何“双重”函数可以替换上面的 make_a_copy ?

编辑 :一些说明。

最佳答案

为什么不能直接复制 BigClass 对象?

void foo(const BigClass& big) {
  while (...) {
    T t{ BigClass(big) };
    ...
  }
}

这会生成一个临时的 BigClass,然后将其移入 T

关于c++ - 双重功能到 std::move?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17497801/

10-13 05:44