https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106239
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- https://cplusplus.github.io/LWG/issue2033 Officially made it CopyInsertable: Requires: T shall be MoveInsertable into *this and CopyInsertable into *this. CopyInsertable is basically: ::new((void*)p) T(v) (for pre c++20). So yes it would be invalid.