定义
标准库函数function()和bind()定义于头文件1
2
3
4
5
6
7
8
9
10template< class >
class function; /* undefined */
template< class R, class... Args >
class function<R(Args...)>;
template< class F, class... Args >
/*unspecified*/ bind( F&& f, Args&&... args );
template< class R, class F, class... Args >
/*unspecified*/ bind( F&& f, Args&&... args );
std::function是可调用对象的包装器。它是一个类模板,可以容纳除了类成员(函数)指针之外的所有可调用对象(s包括普通函数、Lambda表达式、函数指针、以及其它函数对象等)。通过指定它的模板参数,它可以用同一的方式处理函数、函数对象、函数指针,并允许保存和延迟执行他们。
而当std::function和std::bind配合起来使用时,所有的可调用对象(包括类的成员函数指针和类成员指针)都将有统一的调用方式。
std::bind 用来将可调用对象与其参数一起绑定。绑定后的结果可以使用std::function进行保存,并延迟调用到任何我们需要的时候。
它有两大作用:
1)将可调用对象与其参数对象一起绑定成一个仿函数
2)将n元可调用对象转成一元或者n-m元可调用对象,即只绑定部分参数。
使用
1 |
|