Есть ли причина использовать "канонические" сигнатуры для operator=
class X {
X& operator=(const X&) = delete;
X& operator=(X&&) = delete;
};
вместо
class X {
void operator=(X) = delete;
};
когда все, что вы хотите сделать, это delete
it?
Upd:
Также рассмотрим ситуацию, когда X
имеет явно объявленный конструктор перемещения или копирования.
class X {
public:
X(X&&);
};
В этом случае op=(X&&)
и op=(const X&)
неявно удаляются, но я хочу явно выразить, что назначение не разрешено.