m68k: replace reload_in_progress by reload_in_progress || lra_in_progress
[official-gcc.git] / gcc / testsuite / g++.dg / cpp1y / pr77585.C
blobaff7a61273f79ed9cc281ac1007fa749b1718265
1 // PR c++/77585
2 // { dg-do run { target c++14 } }
4 // Confusion about this capture when instantiating generic lambda's
5 // function operator
7 template <typename F> int Eat (F &&f) { return f (1); }
9 struct Foo {
10   int x = 1;
11   int Share () { return x++; }
12   int Frob (int);
15 int Foo::Frob (int r)
17   auto lam = [&](auto) { return Share (); };
18   r += Eat (lam);
20   auto lam0 = [&](auto) {
21     auto lam1 = [&](auto) { return Share (); };
22     return Eat (lam1); };
23   r += Eat (lam0);
25   return r;
28 int Frob (int r) 
30   auto lam = [&](auto) { return 1; };
31   r += Eat (lam);
32   return r;
36 int main ()
38   Foo f;
39   
40   return Frob (f.Frob (0)) == 4 ? 0 : 1;