http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50862
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-10-26 10:29:50 UTC --- Yes, I suppose it should be: ~_Unlock() { if (uncaught_exception()) __try { _M_lock.lock(); } __catch(...) { } else _M_lock.lock(); }