Семантика перемещения c ++: когда они должны быть явными? - PullRequest
0 голосов
/ 26 октября 2019

Например,

class A
{

 public: 
 A(int v)
 {
    a_[0]=v;
    a_[1]=v;
 }  

 A(A&& other) noexcept
 : a_(std::move(other.a_)){}

 A& operator=(A&& other) noexcept
 {
   a_ = std::move(other.a_);
   return *this;
 }

 private:
 std::array<int,2> a_;

};

код, соответствующий семантике перемещения, можно считать «очевидным» (т. Е. Перемещением всех подвижных элементов). Если это опущено, компиляторам все еще удается генерировать двоичные файлы, которые будут правильно перемещать экземпляры A?

...