https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109277
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- Yes, looks undefined at first glance. We don't have to diagnose bad uses of type traits (but we don't have to ignore them either, which means both gcc 12 and gcc 13 are correct). The question is whether the trait instantiation is supposed to happen here, or if it should be ok to name the incomplete type as long as its not used before it's complete.