Ł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?
编辑:一些澄清.
为什么你不能只复制BigClass对象?
void foo(const BigClass& big) {
while (...) {
T t{ BigClass(big) };
...
}
}
Run Code Online (Sandbox Code Playgroud)
这使得一个临时的BigClass,然后移入T