https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86295
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- P.S. the uninitialized_xxx algos have to work that way, because if an exception occurs the caller has no way to know how many objects got created before the exception, so the functions could never be used reliably if they didn't do their own cleanup.