函数双重到std :: move?

Łuk*_*Lew 2 c++ move-semantics c++11

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

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

  SomeBigClass
};
Run Code Online (Sandbox Code Playgroud)

在大多数地方,构造函数在temporaries上调用,但在一个地方我需要制作BigClass的显式副本,因为它不是临时的,并且将在循环中多次使用:

void foo(const BigClass& big) {
  while (...) {
    T t(std::make_a_copy(big));
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

std::move在C++ 11或C++ 14中是否有任何"双重"功能可以取代上面的make_a_copy?

编辑:一些澄清.

Jon*_*ely 6

为什么你不能只复制BigClass对象?

void foo(const BigClass& big) {
  while (...) {
    T t{ BigClass(big) };
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这使得一个临时的BigClass,然后移入T