1 // { dg-do compile { target c++2a } } 2 // { dg-additional-options "-fconcepts-ts" } 3 4 template<typename F> FCallable()5concept bool FCallable() 6 { 7 return requires(F) 8 { 9 F::f(); 10 }; 11 } 12 13 class Test1 14 { 15 public: 16 template<FCallable P, FCallable... Pp> g()17 static void g() 18 { 19 (Pp::f(), ...); 20 } 21 }; 22 23 class A 24 { 25 public: f()26 static void f() {} 27 }; 28 29 template<typename X> concept bool C = true; 30 31 template<C... X> bar(X...)32void bar(X...) 33 {} 34 35 struct foo 36 { 37 template<C... X> barfoo38 void bar(X...) 39 {} 40 }; 41 main()42int main() 43 { 44 Test1::template g<A>(); 45 bar(); 46 foo {}.bar(); 47 } 48 49