1 // { dg-do compile { target c++2a } }
2 // { dg-additional-options "-fconcepts-ts" }
3 
4 template<typename F>
FCallable()5 concept 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...)32 void bar(X...)
33 {}
34 
35 struct foo
36 {
37   template<C... X>
barfoo38   void bar(X...)
39   {}
40 };
41 
main()42 int main()
43 {
44   Test1::template g<A>();
45   bar();
46   foo {}.bar();
47 }
48 
49