// { 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; }