Когда исключение выбрасывается из конструктора (создание/копирование/перемещение) при создании предыдущего исключения, почему не вызывается std::terminate ()?

#c #exception

Вопрос:

Когда исключение выбрасывается из конструктора (создание/копирование/перемещение) при создании предыдущего исключения, почему оно не std::terminate() вызывается? Разве это не нарушение обработки предыдущего исключения до того, как предыдущее исключение будет перехвачено, что должно вызвать std::terminate() ?

Ответ №1:

Нет, исключение считается неперехваченным только после завершения инициализации объекта исключения (и до завершения активации обработчика для исключения). Если исключение переосмыслено, оно считается неперехваченным с точки зрения переосмысления.