Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Function 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
};

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));
    ...
  }
}

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

Edit: Some clarifications.

like image 573
Łukasz Lew Avatar asked Jun 01 '26 15:06

Łukasz Lew


1 Answers

Why can't you just copy the BigClass object?

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

This makes a temporary BigClass that is then moved into the T

like image 113
Jonathan Wakely Avatar answered Jun 04 '26 07:06

Jonathan Wakely



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!