std::at_quick_exit
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <cstdlib>
  | 
||
|   int at_quick_exit( /*atexit-handler*/* func ) noexcept; int at_quick_exit( /*c-atexit-handler*/* func ) noexcept;  | 
(1) | (since C++11) | 
|   extern "C++" using /*atexit-handler*/ = void(); // exposition-only extern "C" using /*c-atexit-handler*/ = void(); // exposition-only  | 
(2) | |
Registers the function pointed to by func to be called on quick program termination (via std::quick_exit).
Calling the function from several threads does not induce a data race. The implementation shall support the registration of at least 32 functions.
The registered functions will not be called on normal program termination. If a function need to be called in that case, std::atexit must be used.
Parameters
| func | - | pointer to a function to be called on quick program termination | 
Return value
0 if the registration succeeds, nonzero value otherwise.
Notes
The two overloads are distinct because the types of the parameter func are distinct (language linkage is part of its type)
Example
| This section is incomplete Reason: no example  | 
See also
|    causes abnormal program termination (without cleaning up)  (function)  | |
|    causes normal program termination with cleaning up  (function)  | |
|    registers a function to be called on std::exit() invocation  (function)  | |
|    (C++11)  | 
   causes quick program termination without completely cleaning up   (function)  |