https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120397
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- ~_UninitDestroyGuard() { if (__builtin_expect(_M_cur != 0, 0)) std::_Destroy(_M_first, *_M_cur); } If we handle arrays here then it doesn't impact other uses of std::_Destroy