C++11 Lamda表达式
[capture list] (params list) mutable exception-> return type { function body }
简写形式:
1 [capture list] (params list) -> return type {function body}
2 [capture list] (params list) {function body}
3 [capture list] {function body}
[] 不捕获任何外部变量
[变量名, …] 默认以值得形式捕获指定的多个外部变量(用逗号分隔),如果引用捕获,需要显示声明(使用&说明符)
[this] 以值的形式捕获this指针
[=] 以值的形式捕获所有外部变量
[&] 以引用形式捕获所有外部变量
[=, &x] 变量x以引用形式捕获,其余变量以传值形式捕获
[&, x] 变量x以值的形式捕获,其余变量以引用形式捕获
auto fun = [](int x)->qfloat16 {return x + 1; };
auto fun1 = [=]() mutable{c++; }; //mutable能改变外部变量的值,不加则报错
auto kk = fun(2);