普通的匿名函数
[](int x){return x + 1;};
显示指定返回值类型
[](int x)->int{int y = x + 1; return y;};
对于lambda,只要有返回值,且函数体包含一句语句以上时,其返回值的类型就无法由编译器自动推导,必须明确指定。
lambda的捕获表达式
通过引用捕获,值捕获等捕获方式,lambda的函数体内可以捕获并使用lambda的外围中定义的局部变量以及类成员变量。
引用捕获
int n = 1;
[&](){
n++; // n==2
}();
// n==2
值捕获
int n = 1;
[=]()mutable{
n++; // n==2
}();
网友评论