https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115476
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Aha, so static_assert(__has_unique_object_representations(Foo<0>[])); is valid and should be treated just like static_assert(__has_unique_object_representations(Foo<0>)); but class Foo; static_assert(__has_unique_object_representations(Foo[])); is invalid, because 'Foo' is not a complete type.