// { dg-do compile { target c++17_only } } | |
// { dg-options "-fconcepts" } | |
template<typename T> | |
concept bool C = __is_class(T); | |
C{T} void f1(); | |
struct S1 | |
{ | |
C{T} void f2(); | |
C{T} static void f3(); | |
}; | |
int main() | |
{ | |
S1 s; | |
f1<S1>(); | |
s.f2<S1>(); | |
S1::f3<S1>(); | |
return 0; | |
} | |
template<typename T> | |
void f1() requires C<T> | |
{ | |
} | |
template<typename T> | |
void S1::f2() requires C<T> | |
{ | |
} | |
template<typename T> | |
void S1::f3() requires C<T> | |
{ | |
} |