21 Language support library [language.support]

21.8 Exception handling [support.exception]

21.8.4 Abnormal termination [exception.terminate]

21.8.4.1 Type terminate_­handler [terminate.handler]

using terminate_handler = void (*)();

Тип объекта handler function , вызываемого при завершении обработки исключения.std​::​terminate()

Required behavior: A terminate_­handler должен прекратить выполнение программы, не возвращаясь к вызывающей стороне.

Default behavior: terminate_­handler Вызовы реализации по умолчаниюabort().

21.8.4.2 set_­terminate [set.terminate]

terminate_handler set_terminate(terminate_handler f) noexcept;

Effects: Устанавливает функцию, обозначенную f как текущая функция-обработчик для завершения обработки исключения.

Remarks: Не указано, обозначает ли значение нулевого указателя значение по умолчанию terminate_­handler.

Returns: Предыдущий terminate_­handler.

21.8.4.3 get_­terminate [get.terminate]

terminate_handler get_terminate() noexcept;

Returns: Текущий terminate_­handler. [ Note: Это может быть значение нулевого указателя. ] end note

21.8.4.4 terminate [terminate]

[[noreturn]] void terminate() noexcept;

Remarks: Вызывается реализацией, когда от обработки исключений необходимо отказаться по любой из нескольких причин ([except.terminate]). Также может вызываться непосредственно программой.

Effects: Вызывает terminate_­handler функцию. Не указано, какая terminate_­handler функция будет вызываться, если во время вызова активно исключение set_­terminate. В противном случае вызывает текущую terminate_­handler функцию. [ Note: В terminate_­handler этом контексте значение по умолчанию всегда считается вызываемым обработчиком. ] end note