1 // { dg-do run { target c++11 } }
2 // PR c++/83160 failed to capture as lvalue
3 
main()4 int main ()
5 {
6   const int a = 0;
7 
8   if (![&a] (const int *p)
9       {
10 	const int &b = a;
11 	// We should bind to the outer a
12 	return &b == p;
13       } (&a))
14     return 1;
15 
16   if (![&] (const int *p)
17       {
18 	const int &b = a;
19 	// We should bind to the outer a
20 	return &b == p;
21       } (&a))
22     return 2;
23 
24   if ([=] (const int *p)
25       {
26 	const int &b = a;
27 	// We should bind to the captured instance
28 	return &b == p;
29       }(&a))
30     return 3;
31 
32   return 0;
33 }
34