https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85222
--- Comment #16 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #14) > For the in-place transformation in libsupc++ if something catches the old > failure and a new failure is thrown, is it possible? The other way around, > if we would be throwing the new failure and catching the old one, doesn't > seem to be possible, the cxx11 failure is bigger (32 bytes compared to 16 > bytes for the old one). I must be misunderstanding the scenario you're describing, because to me it seems like we could use 32 bytes to store a 16 byte object, but not the other way around. Anyway, I think in-place transformations are not an option. Code could have pointers to the data in the original exception. If we destroy it and create a new object in the same location we invalidate those pointers.