// PR c++/54170 // { dg-do run { target c++11 } } #include struct A; typedef A* ptr; typedef int (A::*pmf) (int); typedef int (A::*pdm); int total; void add(int n) { total += n; } template RType Call(Callable native_func, int arg) { return native_func(arg); } template RType do_test(int delta) { return Call([=](int delta) { add(delta); return nullptr; }, delta); } template void test() { total = 0; assert (!do_test(5)); assert (total == 5); assert (!do_test(20)); assert (total == 25); assert (!do_test(-256)); assert (total == -231); } int main() { test(); test(); test(); }