lambda表达式就是表达式或函数对象
捕获
1.捕获只能捕获局部变量。对于全局变量,全局对象来说没有捕获概念,所有函数都可以使用,所以对于lambda表达式也可以使用
2.lambda表达式在哪一个函数中,那么捕获范围只在该函数内的局部变量和函数形参。包括主函数
3.获得lambda表达式的类型名,就相当于获得一个函数指针。通过该类型名就可以进行调用该lambda表达式
int main()
{
int x = 0;
auto f1 = [&](int a)->int
{
x += 10;
cout << "f1(x)= " << x << endl;
return x;
};
auto f2 = [=](int a)->int
{
return x;
};
x = 100;
cout << "f1= " << f1(0) << endl;;
cout << "f2= " << f2(0) << endl;
return 0;
}
延迟捕获