[](int x, int y) -> int { int z = x + y; return z + x; }
[] // 沒有定义任何变量。使用未定义变量会引发错误。 [x, &y] // x以传值方式传入(默认),y以引用方式传入。 [&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。 [=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。 [&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。 [=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int main()
- {
- int a[4] = { 1, 2, 3, 4 };
- int total = 0;
- for_each(a, a + 4, [&](int & x) { total += x; x *= 2; });
- cout << total << endl; //输出 10
- for_each(a, a + 4, [=](int x) { cout << x << " "; });
- return 0;
- }
程序的输出结果如下:
10
2 4 6 8
- #include <iostream>
- using namespace std;
- int main()
- {
- int x = 100,y=200,z=300;
- auto ff = [=,&y,&z](int n) {
- cout <<x << endl;
- y++; z++;
- return n*n;
- };
- cout << ff(15) << endl;
- cout << y << "," << z << endl;
- }
100
225
201, 301