C++11 lambda表达式

lambda语法:

[ 捕 获 列 表 ]( 参 数 列 表 ) mutable  throw(异 常 类型) -> 返 回 类 型 {

函数体…

}

捕获列表方式:

• [] 空捕获列表

• [name1, name2, . . . ] 捕获一系列变量

• [&] 引用捕获, 让编译器自行推导捕获列表

• [=] 值捕获, 让编译器执行推导应用列表

 

参数列表:可选,lambda函数的传入参数列表;

mutable:可选,表示可以修改按值传入的变量副本(不是值本身),不会将改变传递到lambda表达式之外;

throw()可选,表示lambda表达式可以抛出指定类型的异常;

返回类型:可选,lambda表达式返回类型。

 

例子:

auto add= [](int aint b)->int{

    return a + b;

};

int ret = add(1,2);

 

 

最简单的lambda表达式:

auto value = []{

    return 0;

}

 

泛型lambda

C++14新增泛型lambda,即可以在lambda表达式参数中使用auto关键字,lambda可以自动推导参数类

型。

auto add = [](auto xauto y){

    return x+y;

}

你可能感兴趣的:(C/C++)