Lambda申明方式

Lambda表达式允许在函数内部创建一个匿名函数

声明方式:[captrues(params) ->ret {Statements};

1
2
3
4
auto fadd = [](int a, int b)
{
return a + b;
}; // 注意最后有分号

[]表示开始定定义Lambda表达式,()里面是函数的参数 ,{}里面是函数体

显示指明返回值:

1
2
3
4
auto fadd = [](int a, int b) -> ret
{
return a + b;
};

Lambda表达式的变量截取

[] 不截取任何变量

[&] 截取外部作用域的所有变量,并作为引用在函数体中使用

[=] 截取外部作用域中的所有变量,并拷贝一份在函数体中使用

[=, &foo] 截取外部作用域中所有变量并拷贝一份在函数体中使用,但对foo变量使用引用

[bar] 截取bar变量并拷贝一份在函数体使用,不截取其他变量

[this] 截取当前类中的指针