如何将boost :: bind对象传递给函数?

Tri*_*tan 11 c++ boost-bind

我有一维功能最小化器.现在我正在传递函数指针.然而,许多功能具有多个参数,其中一些参数保持固定.我已经使用像这样的仿函数实现了这个

template <class T>
minimize(T &f) {
}

Functor f(param1, param2);
minimize<Functor>(f);
Run Code Online (Sandbox Code Playgroud)

然而,仿函数定义有很多问题.Boost :: bind看起来更干净.所以我可以这样做:

minimize(boost:bind(f,_1,param1,param2))
Run Code Online (Sandbox Code Playgroud)

但是我不清楚我的minimize声明应该使用什么boost::bind.什么类型的对象是boost::bind?是否有一个简单的模式,避免仿函数的样板,但允许多参数绑定?

Ore*_*ost 17

你可以使用boost::function.我认为boost::bind确实有自己的返回类型,但这是兼容的boost::function.典型用法是为函数创建一个typedef:

typedef boost::function<bool(std::string)> MyTestFunction;
Run Code Online (Sandbox Code Playgroud)

然后你可以传递任何兼容的功能boost::bind:

bool SomeFunction(int i, std::string s) { return true; }
MyTestFunction f = boost::bind(SomeFunction, 42, _1);
f("and then call it.");
Run Code Online (Sandbox Code Playgroud)

我希望这就是你想要的.

它还可以通过将this调用指针作为第二个参数传递给方法来处理boost::bind.