2018-09-10 C++ Lambda专题

典型示例

注意 {}中是标准函数体,需要以 ; 结尾 即

[]()->int{ …………;} ;


#includeusing namespace std;

int main()

{

int a = 1;

int b = 2, c;

auto func = [&]{c = a > b ? a : b;};

func();

cout<< a<<"\t"

auto func_2 = [=](int x, int y){return a * x + b * y;};

cout<< func_2(3,5);

//用   ()->char   指定返回类型,存在强制类型转换

auto func3 = [=]()->char{return b;}; 

cout<< sizeof(func3());

return 0;

}

[]:默认不捕获任何变量;

[=]:默认以值捕获所有变量;

[&]:默认以引用捕获所有变量;

[x]:仅以值捕获x,其它变量不捕获;

[&x]:仅以引用捕获x,其它变量不捕获;

[=, &x]:默认以值捕获所有变量,但是x是例外,通过引用捕获;

[&, x]:默认以引用捕获所有变量,但是x是例外,通过值捕获;

[this]:通过引用捕获当前对象(其实是复制指针);

[*this]:通过传值方式捕获当前对象;

你可能感兴趣的:(2018-09-10 C++ Lambda专题)