使用std :: bind时修复参数

时间:2015-11-27 18:17:27

标签: c++11

此代码无法编译,我不明白为什么:

struct C { int a;};

void foo(C c, int s)
{
  cout << c.a << s;
}

int main()
{
  std::function<void(C,int)> call = std::bind(&foo,std::placeholders::_1,5);
  C c;
  c.a = 5;
  call(c);
  return 0;
}

我明白了:

No match for call to std::function<void(C,int)> (C&)

1 个答案:

答案 0 :(得分:1)

bind()表达式std::bind(&foo, _1, 5)产生一元函数。您尝试使用一元函数初始化二进制std::function<void(c, int)>。你的意思是用这样的东西吗?

std::function<void(C)> call = std::bind(&foo, _1, 5);