此代码无法编译,我不明白为什么:
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&)
答案 0 :(得分:1)
bind()
表达式std::bind(&foo, _1, 5)
产生一元函数。您尝试使用一元函数初始化二进制std::function<void(c, int)>
。你的意思是用这样的东西吗?
std::function<void(C)> call = std::bind(&foo, _1, 5);