https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89130
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- With the removal of if constexpr we would unconditionally instantiate __relocate_a, which could fail ... but only in cases like a deleted move constructor. This avoids that instantiation, so it doesn't fail for weird types, and doesn't spend time instantiating a function template that isn't needed. Not strictly necessary, but like you say, it avoids gratuitously rejecting some types that are weird, but can still be used in limited ways. OK, let's leave it like this.