Я прочитал две статьи о stackOverflow, одна из которых описывает идиому копирования и обмена, а другая говорит о семантике перемещения, но я не понимаю, почему мы должны поменять местами оператор присваивания, когда конструктор перемещения или конструктор копирования уже сделал этодля нас
так что из того, что я понимаю, как объяснено, если мы используем lvalue, оператор присваивания создаст объект с помощью конструктора копирования, если rvalue, то он создаст объект с помощью конструктора перемещения, поэтому предположим, что мы выбираемпоследний
скажем, у нас есть функция, которая меняет объекты-члены, а ниже - оператор присваивания, поэтому, как я уже сказал, давайте сначала скажем, что у нас есть значение r, оператор = создаст объект с помощью конструктора перемещения, так почему же мынужна ли здесь функция подкачки ??
мы уже выполнили то, что хотим, мы сделали объект с помощью конструктора перемещения и "украли или забрали" данные, которые нам нужны, так что зачем нужен дополнительный своп?
разве мы не делаем то же самое,снова и снова просто поменяться местами?
вот статьи / темы
Что такое семантика перемещения?
Что такое копирование иидиома?
dumb_array& operator=(dumb_array other) // (1)
{
swap(*this, other); // (2)
return *this;
}