Finally I figured out the issue... D'oh.
It was not that the exceptions were left uncaught! The call to std::terminate
was made when the exception was being thrown out of a destructor, and that is not allowed by default in C++11. The actual issue I faced was this: Destructors and noexcept -- the compiler bug allowed me to stay unaware of the library bug...