How do you pass boost::bind objects to a function?
boost-bind, c++
Solution
You can just use `boost::function`. I think `boost::bind` does have its own return type, but that is compatible with `boost::function`. Typical use is to make a typedef for the function:
typedef boost::function<bool(std::string)> MyTestFunction;
and then you can pass any compatible function with `boost::bind`:
bool SomeFunction(int i, std::string s) { return true; }
MyTestFunction f = boost::bind(SomeFunction, 42, _1);
f("and then call it.");
I hope that is what you want.
It also works with methods by passing the `this` pointer for the call as second parameter to `boost::bind`.
Problem
I have a one-dimensional function minimizer. Right now I'm passing it function pointers. However many functions have multiple parameters, some of which are held fixed. I have implemented this using functors like so ``` template <class T> minimize(T &f) { } Functor f(param1, param2); minimize<Functor>(f); ``` However the functor definition has lots of crud. Boost::bind looks cleaner. So that I could do: ``` minimize(boost:bind(f,_1,param1,param2)) ``` However I'm not clear what my `minimize` declaration should like like using `boost::bind`. What type of object is `boost::bind`? Is there an easy pattern for this that avoids the boilerplate of functors but allows multiple parameter binding?