假设我有一个只有一个构造函数的类:
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/