...
If your signal handler is not a plain old function, then the behavior of a call to it in response to a signal is implementation-defined at best, and likely to result in undefined behavior. All signal handlers must meet the definition of a plain old function. In particular, this prohibits use of features that exist in C++ but not C (such as non-POD objects and exceptions), including indirect use of such features through function calls, in addition to the restrictions placed on signal handlers in a C program. See Rule 11. : Signals (SIG) for rules regarding conforming use of signals in a C program.
...