В книге Херба Саттера Исключительный С++ (1999) у него есть слова в решении пункта 10:
"Исключение - небезопасное" и "плохой дизайн" идут рука об руку. Если кусок кода не является безопасным для исключений, это обычно хорошо и может быть просто исправлено. Но если часть кода не может быть исключена из-за своей базовой конструкции, это почти всегда является сигналом ее плохого дизайна.
Пример 1: Функция с двумя различными обязанностями сложна для исключения исключений.
Пример 2: Оператор присваивания копий, который написан таким образом, что он должен проверять самоопределение, вероятно, не является безопасным с точки зрения безопасности
Что он подразумевает под термином "проверка на самоназвание" ?
[ЗАПРОС]
Дэйв и АндрейТ показывают нам, что означает "проверка на самоназвание" . Это хорошо. Но вопрос еще не закончен. Почему "проверка на самоназвание" вредит "безопасности исключений" (согласно Hurb Sutter)? Если вызывающий пытается выполнить самоопределение, то "проверка" работает так, как будто никакого назначения когда-либо не происходит. Это действительно больно?
[MEMO 1] В пункте 38 "Идентификация объекта" позже в книге "Херб" он объясняет самоназначение.