考虑下面的简单代码:
int f1(int a) {
std::cout << a << std::endl;
}
int main (int agrc, char* argv[]) {
std::function<int(int)> f = std::bind(&f1, std::placeholders::_1);
f(123);
return 0;
}
我已经阅读关于std :: function和std :: bind的一些文档,但仍然不理解它如何工作。编译器显示std :: bind的调用返回类型为_Bind_helper的对象,然而,我没有看到std :: function类具有带输入类型_Bind_helper的构建函数,那么std :: function xxx = std :: bind xxx 如何工作呢?
std::function
有一个构造函数模板,接受任何可调用的函数对象类型。 - songyuanyaostd::bind
是不必要的。std::function<int(int)> f(f1);
可以完全达到同样的效果,而且没有std::bind
带来的额外开销。 - Pete Becker