所谓lambda,在c++中就是一个闭包函数:能够捕获域内变量的未命令的函数对象。
语法
| # | 语法 | 
|---|---|
| 1 | [ capture-list ] ( params ) mutable(optional) exception attribute -> ret { body } | 
| 2 | [ capture-list ] ( params ) -> ret { body } | 
| 3 | capture-list ] ( params ) { body } | 
| 4 | [ capture-list ] { body } | 
- 
    
完整声明。
 - 
    
lambda常量的声明:以复制的方式捕获对象,对象不可修改。
 - 省略了尾部的返回类型:闭包的operator()的返回类型根据以下规则确定:
c++14之前:- if the body consists of nothing but a single 
returnstatement with an expression, the return type is the type of the returned expression (after rvalue-to-lvalue, array-to-pointer, or function-to-pointer implicit conversion) . - 否则,返回类型为
void。
c++14或之后:
The return type is deduced from return statements as if for a function whose return type is declared auto. 
 - if the body consists of nothing but a single 
 - Omitted parameter list: function takes no arguments, as if the parameter list was () .
 
Refrence
refrence from cppreference