lambda表达式理解

重要:从lambda生成的类都包含一个对应于该lambda所捕获变量的数据成员;且lambda的数据成员也在lambda对象创建时被初始化。

lambda的捕获列表,即使使用值默认捕获,在成员函数中,如果直接使用类的成员变量,会导致捕获的是this,而不是成员变量,因为成员变量不是局部变量。进而导致可能承受this变成空悬指针的风险。

 

当然,引用的默认捕获想要引起指针空悬的问题就更轻松了。

 

另外,effective modern c++的条款34提到:lambda相对于bind要更加好用一些。他用于论证这一点的一个例子是:bind(f,gettimenow())中gettimenow会在bind的时候就调用了,但在lambda中是在生成的闭包调用时才计算gettimenow,而后者更符合我们的期望。

posted @ 2019-03-21 18:52  whichone  阅读(92)  评论(0编辑  收藏  举报