#include <iostream>
#include <functional>
using namespace std;
class Foo
{
public:
void memberFunc(double d, int i, int j)
{
cout << d << endl;
cout << i << endl;
cout << j << endl;
}
};
int main()
{
Foo foo;
//一种函数接口转换成另一种函数接口,这个接口可用boost::Function接收
std::function<void (int)> fp = std::bind(&Foo::memberFunc, &foo, 0.5, std::placeholders::_1, 10); //_1, _2为占位符,若绑定的是成员函数&不可省略,普通函数可省略,&foo传递隐含参数,相当于this指针
fp(100); //(&foo)->memberFunc() 指针方式调用
function<void (int, int)> fp2 = bind(&Foo::memberFunc, ref(foo), 0.5, std::placeholders::_1, std::placeholders::_2);
fp2(100, 200); //foo.memberFunc() 引用方式调用
return 0;
}
注:编译时需要加上-std=c++11 否则编译器不识别
https://www.cnblogs.com/jiayayao/p/6139201.html