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 (*)();
The type of a handler function to be called by std​::​terminate() when terminating exception processing.
Required behavior: A terminate_­handler shall terminate execution of the program without returning to the caller.
Default behavior: The implementation's default terminate_­handler calls abort().

21.8.4.2 set_­terminate [set.terminate]

terminate_handler set_terminate(terminate_handler f) noexcept;
Effects: Establishes the function designated by f as the current handler function for terminating exception processing.
Remarks: It is unspecified whether a null pointer value designates the default terminate_­handler.
Returns: The previous terminate_­handler.

21.8.4.3 get_­terminate [get.terminate]

terminate_handler get_terminate() noexcept;
Returns: The current terminate_­handler.
[ Note
:
This may be a null pointer value.
— end note
 ]

21.8.4.4 terminate [terminate]

[[noreturn]] void terminate() noexcept;
Remarks: Called by the implementation when exception handling must be abandoned for any of several reasons ([except.terminate]).
May also be called directly by the program.
Effects: Calls a terminate_­handler function.
It is unspecified which terminate_­handler function will be called if an exception is active during a call to set_­terminate.
Otherwise calls the current terminate_­handler function.
[ Note
:
A default terminate_­handler is always considered a callable handler in this context.
— end note
 ]