c – 函数double到std :: move?
作者:互联网
假设我有一个只有一个构造函数的类:
class T {
public:
T(BigClass&& big) : big(std::move(big)) {}
...
SomeBigClass
};
在大多数地方,构造函数在temporaries上调用,但在一个地方我需要制作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,c11,move-semantics 来源: https://codeday.me/bug/20191002/1844108.html