Операторы перемещения и копирования в одном классе, основанные на copy-swap идиоме

В классе есть два перегруженных оператора, перемещения и копирования:

MyClass& operator=(MyClass other) // other не через ссылку, т. к. используется copy-swap идиома
MyClass& operator=(MyClass&& other) 

Строка std::move(object) влечет за собой ошибку компиляции, т. к. компилятор не знает, какой из методов выше вызывать, ведь объект можно передать как rvalue в любой. Возможно ли это исправить, по-прежнему используя copy-swap идиому?


Ответы (1 шт):

Автор решения: HolyBlackCat

Вторую перегрузку можно просто выкинуть, первой достаточно.

Еще есть вариант заменить параметр первой перегрузки на const MyClass &other, и внутри делать копию в локальную переменную.

→ Ссылка