#include #include #include #include #include using namespace std; using namespace boost; using namespace boost::lambda; unsigned func_impl (int arg1, bool arg2, double arg3) { cout << "function() called with args " << arg1 << ", " << arg2 << ", " << arg3 << endl; return abs (static_cast((arg2 ? arg1 : 2 * arg1) * arg3)); } int main () { function f1 = bind (func_impl, 15, _1, _2); function f2 = bind (f1, false, _1); function f3 = bind (f2, 4.0); cout << "now invoking f3" << endl; unsigned result = f3 (); cout << "result = " << result << endl; return 0; }