18 Language support library [language.support]

18.8 Exception handling [support.exception]

18.8.3 Abnormal termination [exception.terminate]

18.8.3.1 Type terminate_handler [terminate.handler]

typedef void (*terminate_handler)();

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().

18.8.3.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.

18.8.3.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 ]

18.8.3.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]), in effect immediately after evaluating the throw-expression ([terminate.handler]). May also be called directly by the program.

Effects: Calls the current terminate_handler function. [ Note: A default terminate_handler is always considered a callable handler in this context.  — end note ]