表达式
[capture](parameters)->return-type{body}
如果没有参数,()括号、返回值可以省略。
example:
1 | [](int x, int y) { return x + y; } // 隐式返回类型 |
显示指定返回类型
[](int x, int y) -> int { int z = x + y; return z; }
引用外部变量
Lambda函数可以引用在它之外声明的变量. 这些变量的集合叫做一个闭包. 闭包被定义在Lambda表达式声明中的方括号[]内. 这个机制允许这些变量被按值或按引用捕获.下面这些例子就是:
1 | [] //未定义变量.试图在Lambda内使用任何外部变量都是错误的. |
函数作为参数传递
如果用户想把lambda函数做为一个参数来传递, 那么形参的类型必须是模板类型或者必须能创建一个std::function类似的对象去捕获lambda函数.使用 auto关键字可以帮助存储lambda函数。
1 | auto my_lambda_func = [&](int x) { /*...*/ }; |