Операторы перемещения и копирования в одном классе, основанные на copy-swap идиоме
В классе есть два перегруженных оператора, перемещения и копирования:
MyClass& operator=(MyClass other) // other не через ссылку, т. к. используется copy-swap идиома
MyClass& operator=(MyClass&& other)
Строка std::move(object) влечет за собой ошибку компиляции, т. к. компилятор не знает, какой из методов выше вызывать, ведь объект можно передать как rvalue в любой. Возможно ли это исправить, по-прежнему используя copy-swap идиому?
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Вторую перегрузку можно просто выкинуть, первой достаточно.
Еще есть вариант заменить параметр первой перегрузки на const MyClass &other, и внутри делать копию в локальную переменную.