https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66988
Bug ID: 66988 Summary: [concepts] concept with template template parameter satisfied erroneously Product: gcc Version: c++-concepts Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: eric.niebler at gmail dot com Target Milestone: --- Pretty sure the static assert in the program below should not fire, but it does. #include <type_traits> template <template <class...> class T, class... U> concept bool _Valid = requires { typename T<U...>; }; template <class T> using __t = typename T::type; template <class T> struct __has_type : std::false_type { }; template <class T> requires _Valid<__t, T> struct __has_type<T> : std::true_type { }; static_assert(!__has_type<int>(), "");