类模版std::function是一种通用、多态的函数封装。
可调用对象的包装器,它最重要的功能是实现延时调用。
std::function对象是对C++中现有的可调用实体的一种类型安全的封装。
1、绑定普通函数
typedef std::function<int(int)> Functional; //声明一个模板
int TestFunc(int a) //定义一个普通函数
{
return a;
}
Functional f = TestFunc;
int res = f(1);
2、绑定lambda函数
auto lambda = [](int a)->int{return a;}; //定义一个 lambda 函数
Functional f = lambda;
int res = obj(1);
3、封装类的成员函数和static成员函数
CTest t;
Functional f = std::bind(&CTest::Func, &t, std::placeholders::_1);
int res = f(3);
4、封装类的static成员函数
Functional f = CTest::SFunc;
int res = obj(4);