// PR c++/104527 | |
// { dg-do compile { target c++20 } } | |
template<class T, class U> | |
concept is_same = __is_same(T, U); | |
template<class T> | |
struct A { | |
template<class...> | |
requires requires { { 0 } -> is_same<T>; } | |
struct B {}; | |
template<class...> | |
requires requires { { 1 } -> is_same<T>; } | |
static void f(); | |
}; | |
A<int>::B<> a1; | |
A<bool>::B<> a2; // { dg-error "constraint" } | |
int main() { | |
A<int>::f(); | |
A<bool>::f(); // { dg-error "no match" } | |
} |