// { dg-do compile { target c++17 } } // { dg-options "-fconcepts" } template concept C1 = __is_same_as(T, int); template concept C2 = N == 0; template class X> concept C3 = false; template struct Foo; // Instantiation of default arguments happens at the point of // instantiation for the class. template struct S1 { }; template struct S2 { }; // { dg-error "does not constrain a type" } template struct S3 { }; // { dg-error "does not constrain a type|missing" } S1<> s1; // { dg-error "constraint failure|invalid type" } S2<> s2; // { dg-error "constraint failure|invalid" } S3<> s3; // { dg-error "constraint failure|invalid" }