OOP56-CPP. Honor replacement handler requirements
The handler functions new_handler , terminate_handler , and unexpected_handler can be globally replaced by custom implementations , as specified by [handler.functions], paragraph 2, of the C++ Standard [ ISO/IEC 14882-2014 ]. For instance, an application could set a custom termination handler by calling std::set_terminate() , and the custom termination handler may log the termination for later auditing. However, the C++ Standard, [res.on.functions], paragraph 1, states the following:
In certain cases (replacement functions, handler functions, operations on types used to instantiate standard library template components), the C++ standard library depends on components supplied by a C++ program. If these components do not meet their requirements, the Standard places no requirements on the implementation.
Paragraph 2, in part, further states the following:
In particular, the effects are undefined in the following cases:
— for handler functions, if the installed handler function does not implement the s