| // { dg-do run { target c++11 } } | |
| // PR c++/83160 failed to capture as lvalue | |
| int main () | |
| { | |
| const int a = 0; | |
| if (![&a] (const int *p) | |
| { | |
| const int &b = a; | |
| // We should bind to the outer a | |
| return &b == p; | |
| } (&a)) | |
| return 1; | |
| if (![&] (const int *p) | |
| { | |
| const int &b = a; | |
| // We should bind to the outer a | |
| return &b == p; | |
| } (&a)) | |
| return 2; | |
| if ([=] (const int *p) | |
| { | |
| const int &b = a; | |
| // We should bind to the captured instance | |
| return &b == p; | |
| }(&a)) | |
| return 3; | |
| return 0; | |
| } |