C++11的闭包(lambda、function、bind)

C++11 lambda匿名函数用法详解

C++11 lambda匿名函数用法详解

c++11随记:std::bind及 std::placeholders_但行技术的博客-CSDN博客_c++ placeholders

C++11的闭包(lambda、function、bind) - YZFHKMS-X - 博客园

Lambda表达式和智能指针 - bear-Zhao - 博客园 (cnblogs.com)

(717条消息) c++ std::thread lambda_后知后觉的博客-CSDN博客

function

C++11: std::function<void()> func; - 时光旅者 - 博客园

std::function 最大的用处是函数回调;

std::function介绍

类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。

通常std::function是一个函数对象类,它包装其它任意的函数对象,被包装的函数对象具有类型为T1, …,TN的N个参数,并且返回一个可转换到R类型的值。std::function使用 模板转换构造函数接收被包装的函数对象;特别是,闭包类型可以隐式地转换为std::function

最简单的理解就是:

   通过std::function对C++中各种可调用实体(普通函数、Lambda表达式、函数指针、以及其它函数对象等)的封装,形成一个新的可调用的std::function对象;让我们不再纠结那么多的可调用实体。一切变的简单粗暴。 

f3 = std::bind(&A, std::placeholders::_3,std::placeholders::_1,std::placeholders::_2)    //f3(1.1,"abc",1) == A(1,1.1,"abc")

表示占位符3(1)对应A的第一个参数(1), 占位符1(1.1)对应A的第个参数(1.1)

typedef std::function< bool (client_t, uid_t, gid_t, bool) >  handler_t;

std::bind(&Handler, std::placeholders::_1, std::placeholders::_4)

bool Handler(client_t client_, bool subscribed) {

}

表示Handler只使用占位符1和占位符4的参数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值