https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86013
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- is_trivially_move_constructible is the wrong trait, trivially_copyable is necessary to determine if memcpy/memmove (and so presumably realloc) are safe. Does your &n!=&alias##n check still work if operator new is replaced in a different translation unit, but the default one is the only one in scope in the current TU?