xref: /llvm-project/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/function/main.cpp (revision fdea9a4ec9b0d9585b8fe8a612686d9f44f40ddc)
1 #include <functional>
2 
foo(int x,int y)3 int foo(int x, int y) {
4   return x + y - 1;
5 }
6 
7 struct Bar {
operator ()Bar8    int operator()() {
9        return 66 ;
10    }
add_numBar11    int add_num(int i) const { return i + 3 ; }
add_num2Bar12    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 
foo2()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 
main(int argc,char * argv[])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(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