// PR c++/56135 // { dg-do run { target c++11 } } #include struct test { template std::function broken(int x) { return [=] { +x; print(); }; } std::function works0() { return [=] { print(); }; } template std::function works1() { return [=] { print(); }; } template std::function works2() { return [=] { this->print(); }; } template void print() { if (this == 0) __builtin_abort (); } }; int main(void) { test().broken(1)(); test().works0()(); test().works1()(); test().works2()(); return 0; }