其他分享
首页 > 其他分享> > c – 函数double到std :: move?

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