https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97720
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=97339 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- I'm not sure if this is a bug. I think when the compiler can see there is no matching handler for the exception, it doesn't perform stack unwinding, it just calls std::terminate without throwing anything. When the destructor is there, it unwinds (because that destructor might have important side effects that the user relies on) by throwing an exception.