Ответ 1
Если вы хотите предложить гарантию исключения, а оператор присваивания по умолчанию не является нелогичным, тогда обычно вам нужно написать его.
Назначение копии по умолчанию не обязательно обеспечивает даже базовую гарантию, которая заключается в том, что никакие ресурсы не протекают, а инварианты классов сохраняются. Назначение некоторых элементов данных, но не всех, может оставить цель в состоянии, когда инварианты класса не удовлетворяются, в зависимости от конкретного класса.
Итак, вы должны оценить оператор по умолчанию для своего класса - если он может бросить, и, бросив отпуск в "недопустимое" состояние, вы должны его подавить. Или ослабить определенные инварианты класса, но это не очень полезно для пользователей.
Существует (по крайней мере) один частный случай. Если все члены данных, кроме одного, имеют нечеткое присвоение, а специальное имеет строгое исключение-безопасное назначение и является первым членом данных в классе, тогда оператор присваивания по умолчанию также будет очень безопасным. Возможно, вы захотите прокомментировать это довольно тщательно, если вы полагаетесь на это, однако, это может оказаться довольно хрупким!