绑定函数具有多于所需的参数并将确定的参数传递给它

时间:2013-11-19 07:38:15

标签: c++ boost boost-bind

让我有一个功能

void f1(type_a a, type_b b, type_c c)

我想将其转换为

void f2(type_a a, type_b b)

而不是c将传递给我的对象。

我怎样才能使用boost:bind?

2 个答案:

答案 0 :(得分:1)

我认为这样的事情

boost::bind(&f1, _1, _2, c_default_value);

答案 1 :(得分:0)

C ++不是一种函数式语言,因此无法对函数进行真正的部分应用。你能做的是以下几点:

#include <boost/bind.hpp>
void f1(int a, double b, char c)
{}
int main()
{
  auto binder = boost::bind(&f1, _1, _2, 'c');
  binder(1, 2.0);
}

但是请注意,虽然您可以将binder传递给任何需要可调用的上下文,但可转换为指向函数的指针