Some time ago, I've outlined a technique for wrapping a C++ fragment in a Structured Exception Handling (SEH) crash catcher. It involved a rather convoluted sequence of C++ to C back to C++ calls.
I'm glad to report that this is no longer necessary. As of Visual Studio 2015 Update 2, one can freely mix and match try/catch with __try/__except in a C++ source. So the SafeCall template I've once presented simplifies to something like this:
void SafeCall(const TFunctor &f)
void *Address = 0;
__except (ExcFilter(GetExceptionCode(), GetExceptionInformation(), Ctxt, Address))
OnCrash(GetExceptionCode(), Address, &Ctxt);