c++ lamda

[captures] (params) mutable-> type{...} //lambda 表达式的完整形式

在 lambda 表达式引出操作符[ ]里的“captures”称为“捕获列表”,可以捕获表达式外部作用域的变量,在函数体内部直接使用,这是与普通函数或函数对象最大的不同(C++里的包闭必须显示指定捕获,而lua语言里的则是默认直接捕获所有外部变量。)

捕获列表里可以有多个捕获选项,以逗号分隔,使用了略微“新奇”的语法,规则如下

[ ]        :无捕获,函数体内不能访问任何外部变量

[ =]      :以值(拷贝)的方式捕获所有外部变量,函数体内可以访问,但是不能修改。

[ &]      :以引用的方式捕获所有外部变量,函数体内可以访问并修改(需要当心无效的引用);

[ var]  :以值(拷贝)的方式捕获某个外部变量,函数体可以访问但不能修改。

[ &var] :以引用的方式获取某个外部变量,函数体可以访问并修改

[ this]  :捕获this指针,可以访问类的成员变量和函数,

[ =,&var] :引用捕获变量var,其他外部变量使用值捕获。

[ &,var]:只捕获变量var,其他外部变量使用引用捕获。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容