https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117541
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- MSVC creates a hole in the middle of the vector, destroying the elements that were there previously, then fills the hole using uninitialized_copy.