本文介绍了函数dual to std :: move?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let's assume I have a class with only one constructor:

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

  SomeBigClass
};

在大多数地方,构造函数在临时表上被调用,但在一个地方,我需要做一个明确的副本BigClass因为它不是一个临时的,并且将在一个循环中使用多次:

In most places the constructor is called on temporaries but in one place I need to make an explicit copy of BigClass because it is not a temporary and will be used multiple times in a loop:

void foo(const BigClass& big) {
  while (...) {
    T t(std::make_a_copy(big));
    ...
  }
}

在C ++ 11或C ++ 14中的dual到 std :: move 将替换上面的make_a_copy?

Is there any function "dual" to std::move in C++11 or C++14 that would replace make_a_copy above ?

编辑:有些澄清。

推荐答案

$ c> BigClass object?

Why can't you just copy the BigClass object?

void foo(const BigClass& big) {
  while (...) {
    T t{ BigClass(big) };
    ...
  }
}

BigClass ,然后移动到 T

这篇关于函数dual to std :: move?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 07:02