https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102975
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Hmm, this is interesting: template<class> concept Never = false; template<class T> concept C = Never<typename T::type>; void f() { struct X { // using type = int; }; static_assert(not C<X>); } is able to compile. I don't know enough about C++ concepts to say if this is valid or not but it looks like the type is really unused in the above case ... This is different from "constexpr bool" which requires the type to be defined ...