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>(), "");

Reply via email to