标签:简化 种类型 UNC 参数类型 简单的 转换 func color 参数
1、std::function介绍
类模板std::function是一种通用的、多态的函数封装。
std::function的实例可以对任何可以调用的目标实体进行存储、复制、调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其他函数对象等。std::function对象是对c++中现有的可调用实体的一种类型安全的包裹(函数指针这类可调用实体,是类型不安全的)。
通常std::function是一个函数对象类,它包装其他任意的函数对象,被包装的函数对象具有类型为T1,...,Tn的n个参数,并且返回一个可转换到R类型的值。std::function使用模板转换构造函数接收被包装的函数对象;
特别是,闭包类型可以隐式地转换为std::function。
std::function统一和简化了相同类型可调用实体的使用方式,使编码变得更简单。
简单的理解就是:
通过std::function对c++中各种可调用实体(普通函数、Lambda表达式、函数指针、以及其它函数对象等)的封装,形成一个新的可调用的std::function对象;让我们不再纠结那么多的可调用实体
2、std::function的原型
template<class R, class ... Args> class function<R(Args...)>
R是返回值类型,Args是函数的参数类型,实例一个std::function对象很简单,就是将可调用对象的返回值类型和参数类型作为模板参数传递给std::function模板类。例如
std::function<void()> f1;---->void f1(); std::function<int (int , int)> f2;---->int f2(int,int)
3、std::function的用法
std::function()函数、std::bind()函数以及lambda
标签:简化 种类型 UNC 参数类型 简单的 转换 func color 参数
原文地址:https://www.cnblogs.com/gary-guo/p/13142156.html