Нет смысла добавлять квалификатор &
в этом случае.
Смысл в том, чтобы запретить вашему классу быть назначаемым для копирования, точка.Назначение квалификатора &
состоит в том, чтобы исключить возможность присвоения копии для rvalue вашего класса (&
помешает оператору назначения копирования быть жизнеспособной функцией в этом случае).Но это здесь не ваша цель - вы хотите, чтобы все копия копирования была неправильно сформирована, так что это просто:
MyType& operator=(MyType const&) = delete;
И жаловаться тому, кто написал эту статическую проверку.
Проблема с:
MyType& operator=(MyType const&) & = delete;
заключается в том, что дополнительная точность оператора, который вы удаляете, предполагает намерение, которого там нет.Меня сразу же заставляет задуматься, есть ли где-то позже в классе, по какой-то причине, у вас:
MyType& operator=(MyType const&) && { ... }
А вы нет, потому что это глупо.