Rebase.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / lambda / lambda-variadic2.C
blobfab1f6ca6ac2968a092cd767f349fed75d655a2f
1 // { dg-do run { target c++11 } }
3 int g() { return 0; }
4 template <class T, class... U>
5 int g(T t, U... u)
7   return t + g(u...);
10 template <class... T>
11 int f1(T... t)
13   return [t...] {
14     return g(t...);
15   }();
18 template <class... T>
19 int f2(T... t)
21   return [&t...] {
22     return g(t...);
23   }();
26 template <class... T>
27 int f3(T... t)
29   return [=] {
30     return g(t...);
31   }();
34 template <class... T>
35 int f4(T... t)
37   return [&] {
38     return g(t...);
39   }();
42 #define assert(E) do { if (!(E)) __builtin_abort(); } while(0)
43 int main()
45   assert (f1() == 0);
46   assert (f2() == 0);
47   assert (f3() == 0);
48   assert (f4() == 0);
49   assert (f1(42) == 42);
50   assert (f2(42) == 42);
51   assert (f3(42) == 42);
52   assert (f4(42) == 42);
53   assert (f1(1,2,3) == 6);
54   assert (f2(1,2,3) == 6);
55   assert (f3(1,2,3) == 6);
56   assert (f4(1,2,3) == 6);