// { dg-do compile { target c++17_only } } // { dg-options "-fconcepts" } #include template concept bool C() { return __is_class(T); } template concept bool P() { return true; } C{A} struct S1 { P{B} int f1(); }; struct S2 {}; int main() { S1 s; assert(s.f1<10>() == sizeof(S2) + 10); return 0; } C{A} P{B} int S1::f1() { return B + sizeof(A); }