| 1 | #include <functional> |
| 2 | |
| 3 | int foo(int x, int y) { |
| 4 | return x + y - 1; |
| 5 | } |
| 6 | |
| 7 | struct Bar { |
| 8 | int operator()() { |
| 9 | return 66 ; |
| 10 | } |
| 11 | int add_num(int i) const { return i + 3 ; } |
| 12 | int add_num2(int i) { |
| 13 | std::function<int (int)> add_num2_f = [](int x) { |
| 14 | return x+1; |
| 15 | }; |
| 16 | |
| 17 | return add_num2_f(i); // Set break point at this line. |
| 18 | } |
| 19 | } ; |
| 20 | |
| 21 | int foo2() { |
| 22 | auto f = [](int x) { |
| 23 | return x+1; |
| 24 | }; |
| 25 | |
| 26 | std::function<int (int)> foo2_f = f; |
| 27 | |
| 28 | return foo2_f(10); // Set break point at this line. |
| 29 | } |
| 30 | |
| 31 | int main (int argc, char *argv[]) |
| 32 | { |
| 33 | int acc = 42; |
| 34 | std::function<int (int,int)> f1 = foo; |
| 35 | std::function<int (int)> f2 = [acc,f1] (int x) -> int { |
| 36 | return x+f1(acc,x); |
| 37 | }; |
| 38 | |
| 39 | auto f = [](int x, int y) { return x + y; }; |
| 40 | auto g = [](int x, int y) { return x * y; } ; |
| 41 | std::function<int (int,int)> f3 = argc %2 ? f : g ; |
| 42 | |
| 43 | Bar bar1 ; |
| 44 | std::function<int ()> f4( bar1 ) ; |
| 45 | std::function<int (const Bar&, int)> f5 = &Bar::add_num; |
| 46 | |
| 47 | int foo2_result = foo2(); |
| 48 | int bar_add_num2_result = bar1.add_num2(i: 10); |
| 49 | |
| 50 | return f1(acc,acc) + f2(acc) + f3(acc+1,acc+2) + f4() + f5(bar1, 10); // Set break point at this line. |
| 51 | } |
| 52 | |