https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115594
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The interesting thing is the reason why clang outputs: <source>:2:25: note: because 't' would be invalid: array has incomplete element type 'void' Is not exactly correct as if you change void to being a incomplete type: struct A; static_assert(C<A>); it is accepted by all compilers ...