本文介绍: 如果捕获列表为[&],则表示所有的外部变量都按引用传递给lambda使用;如果捕获列表为[=],则表示所有的外部变量都按值传递给lambda使用;匿名函数构建的时候对于按值传递的捕获列表,会立即将当前可以取到的值拷贝一份作为常数,然后将该常数作为参数传递。Lambda捕获列表总结[]空捕获列表,Lambda不能使用所在函数中的变量。[names]names是一个逗号分隔的名字列表,这些名字都是Lambda所在函数的局部变量。默认情况下,这些变量会被拷贝。
第17.1节 匿名函数的基本语法
语法规则:lambda表达式可以看成是一般函数的函数名被略去,返回值使用了一个 -> 的形式表示。唯
一与普通函数不同的是增加了“捕获列表”。
一般情况下,编译器可以自动推断出lambda表达式的返回类型,所以我们可以不指定返回类型,即:
但是如果函数体内有多个return语句时,编译器无法自动推断出返回类型,此时必须指定返回类型。
第17.2节 捕获列表
有时候,需要在匿名函数内使用外部变量,所以用捕获列表来传递参数。根据传递参数的行为,捕获列
表可分为以下几种:
与参数传值类似,值捕获的前提是变量可以拷贝,不同之处则在于,被捕获的变量在 lambda表达式被
创建时拷贝,而非调用时才拷贝:
第17.3节 总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。