1 // { dg-options "-std=c++17 -fconcepts" }
2 
3 template<typename T>
C()4   concept bool C() { return __is_class(T); }
5 
6 template<typename T>
D()7   concept bool D() { return C<T>() and __is_empty(T); }
8 
9 struct S1 { } s1;
10 struct S2 { int n; } s2;
11 
f1(T x)12 template<C T> void f1(T x) { }
f1(T x)13 template<D T> void f1(T x) { }
14 
main()15 int main() {
16   f1(0); // { dg-error "matching" }
17 }
18