1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <functional> #include <iostream> int main(){ using namespace std; using namespace placeholders; // no argument binding, both are equivalent, both return opposite of input auto neg_lambda = [](bool b){ return !b; }; // could do: //function<bool(bool)> neg_func = neg_lambda; function<bool(bool)> neg_func = [](bool b){ return !b; }; // with argument binding, always returns true // could do: //function<bool()> true_func(bind(neg_func,false)); function<bool()> true_func(bind(neg_lambda,false)); cout << boolalpha << "booleans:\n"; cout << "unbound...\n\t" << neg_lambda(true) << "\n\t" << neg_func(true) << "\n" << "bound...\n\t" << true_func() << "\n"; // more complicated, will add the parameters auto add_lambda = [](int a, int b){ return a+b; }; // could do: //function<int(int,int)> add_func = add_lambda; function<int(int,int)> add_func = [](int a, int b){ return a+b; }; // with argument binding, always adds 5 // could do: //function<int(int)> add5_func(bind(add_func,5,_1)); function<int(int)> add5_func(bind(add_lambda,5,_1)); cout << "additions:\n\t" << add_lambda(10,20) << "\n\t" << add_func(10,20) << "\n" << "add 5:\n\t" << add5_func(7); } |
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmludCBtYWluKCl7CiAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICB1c2luZyBuYW1lc3BhY2UgcGxhY2Vob2xkZXJzOwogIC8vIG5vIGFyZ3VtZW50IGJpbmRpbmcsIGJvdGggYXJlIGVxdWl2YWxlbnQsIGJvdGggcmV0dXJuIG9wcG9zaXRlIG9mIGlucHV0CiAgYXV0byBuZWdfbGFtYmRhID0gW10oYm9vbCBiKXsgcmV0dXJuICFiOyB9OwogIC8vIGNvdWxkIGRvOgovL2Z1bmN0aW9uPGJvb2woYm9vbCk+IG5lZ19mdW5jID0gbmVnX2xhbWJkYTsKICBmdW5jdGlvbjxib29sKGJvb2wpPiBuZWdfZnVuYyA9IFtdKGJvb2wgYil7IHJldHVybiAhYjsgfTsKCiAgLy8gd2l0aCBhcmd1bWVudCBiaW5kaW5nLCBhbHdheXMgcmV0dXJucyB0cnVlCiAgLy8gY291bGQgZG86Ci8vZnVuY3Rpb248Ym9vbCgpPiB0cnVlX2Z1bmMoYmluZChuZWdfZnVuYyxmYWxzZSkpOwogIGZ1bmN0aW9uPGJvb2woKT4gdHJ1ZV9mdW5jKGJpbmQobmVnX2xhbWJkYSxmYWxzZSkpOwoKICBjb3V0IDw8IGJvb2xhbHBoYSA8PCAiYm9vbGVhbnM6XG4iOwoKICBjb3V0IDw8ICJ1bmJvdW5kLi4uXG5cdCIKICAgICAgIDw8IG5lZ19sYW1iZGEodHJ1ZSkgPDwgIlxuXHQiCiAgICAgICA8PCBuZWdfZnVuYyh0cnVlKSA8PCAiXG4iCiAgICAgICA8PCAiYm91bmQuLi5cblx0IgogICAgICAgPDwgdHJ1ZV9mdW5jKCkgPDwgIlxuIjsKCiAgLy8gbW9yZSBjb21wbGljYXRlZCwgd2lsbCBhZGQgdGhlIHBhcmFtZXRlcnMKICBhdXRvIGFkZF9sYW1iZGEgPSBbXShpbnQgYSwgaW50IGIpeyByZXR1cm4gYStiOyB9OwogIC8vIGNvdWxkIGRvOgovL2Z1bmN0aW9uPGludChpbnQsaW50KT4gYWRkX2Z1bmMgPSBhZGRfbGFtYmRhOwogIGZ1bmN0aW9uPGludChpbnQsaW50KT4gYWRkX2Z1bmMgPSBbXShpbnQgYSwgaW50IGIpeyByZXR1cm4gYStiOyB9OwoKICAvLyB3aXRoIGFyZ3VtZW50IGJpbmRpbmcsIGFsd2F5cyBhZGRzIDUKICAvLyBjb3VsZCBkbzoKLy9mdW5jdGlvbjxpbnQoaW50KT4gYWRkNV9mdW5jKGJpbmQoYWRkX2Z1bmMsNSxfMSkpOwogIGZ1bmN0aW9uPGludChpbnQpPiBhZGQ1X2Z1bmMoYmluZChhZGRfbGFtYmRhLDUsXzEpKTsKCiAgY291dCA8PCAiYWRkaXRpb25zOlxuXHQiCiAgICAgICA8PCBhZGRfbGFtYmRhKDEwLDIwKSA8PCAiXG5cdCIKICAgICAgIDw8IGFkZF9mdW5jKDEwLDIwKSA8PCAiXG4iCiAgICAgICA8PCAiYWRkIDU6XG5cdCIKICAgICAgIDw8IGFkZDVfZnVuYyg3KTsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 2964 kB returned value: 0
booleans: unbound... false false bound... true additions: 30 30 add 5: 12


