std::quick_exit - cppreference.com

From cppreference.com

[[noreturn]]voidquick_exit(intexit_code)noexcept;(since C++11)Causes normal program termination to occur without completely cleaning the resources.

Functions passed to

std::at_quick_exit

are called in reverse order of their registration. If an exception tries to propagate out of any of the functions,

std::terminate

is called. After calling the registered functions, calls std::_Exit(exit_code).

Functions passed to

std::atexit

are not called.

Parameters

exit_code - exit status of the program Example

Run this code

#include<cstdlib>#include<iostream>template<intN>voidquick_exit_handler(){std::cout<<"quick_exit handler #"<<N<<std::endl;// flush is intended}voidat_exit_handler(){std::cout<<"at_exit handler\n";}intmain(){if(std::at_quick_exit(quick_exit_handler<1>)||std::at_quick_exit(quick_exit_handler<2>)){std::cerr<<"Registration failed\n";returnEXIT_FAILURE;}std::atexit(at_exit_handler);// the handler will not be calledstructR{~R(){std::cout<<"destructor\n";}}resource;/*...*/std::quick_exit(EXIT_SUCCESS);std::cout<<"This statement is unreachable...\n";}Output:

quick_exit handler #2 quick_exit handler #1 See also