Lambda 表达式的语法:
捕获列表(参数列表)可选限定符->返回类型{}
[] 捕获列表(Capture List):Lambda 默认是不能直接使用外部函数的局部变量的,必须通过捕获列表把它"抓"进来。
cpp
[]:空捕获,不使用任何外部局部变量。
[a]:值捕获。把变量 a 复制一份传进来,在 Lambda 内部改动 a 不会影响外面。
[&a]:引用捕获。把变量 a 的引用传进来,内部改动会直接影响外面。
[=]:值捕获所有外部可见的局部变量。
[&]:引用捕获所有外部可见的局部变量。
() 参数列表(Parameter List):与普通函数的参数一样。不需要传参时可省略小括号 () 。
-> 返回值类型(Trailing Return Type):绝大多数情况下不需要写,编译器会根据 { 函数体 } 里的 return 语句自动推导出来。