**
lambda表达式的几种取值方式
**
#include <iostream>
using namespace std;
//捕获外部变量
void fun()
{
int a = 123;
auto f = [a] { cout << a << endl; };
f(); // 输出:123 调用函数
}
//2.值捕获
void func()
{
int a = 2222;
auto f = [a]{cout << a << endl; };
a = 5654654;
f();//2222
}
//3.引用捕获
void test()
{
int a = 6599;
//auto f = [a]{cout << a << endl; };
auto f = [&a]{cout << a << endl; };
a = 321;
f();
}
//4.隐式捕获
void test01()
{
int a = 6465466;
auto f = [=]{cout << a << endl; };
f();
}
//5.隐式引用捕获
void test02()
{
int a = 9897;
auto f = [&]{cout << a << endl; }; //引用捕获
a = 321;
f();
}
//6.修改捕获变量
void test03()
{
int a = 321;
//有mutable时,参数()不可以省略
auto f = [a]()mutable{cout << ++a << endl; };
cout << a << endl; //321
f();
}
int main()
{
//func();
//test();
//test01();
//test02();
test03();
return 0;
}