// { dg-do compile { target c++2a } } template concept C = __is_class(T); template concept D = C and __is_empty(T); template requires C class X> struct S { }; // An unconstrained template can be used as an argument for any // constrained template template parameter. template struct T0 { }; S x1; // Matching constraints are valid. template requires C struct T1 { }; S x2; int main() { }