一、匿名函数的基本语法 lambda 表达式可以看成是一般函数的函数名被略去,返回值使用了一个 -> 的形式表示。 唯一与普通函数不同的是增加了捕获列表。 [捕获列表](参数列表) -> 返回类型{ 函数体 } auto Add = [](int a, int b) -> int { return a + b; }; cout << Add(1, 2) << endl; 一般情况下,编译器可以自动推断出 lambda 表达式的返回值类型,所以我们可以不指定返回值类型。 但是如果函数体内有多个 return 语句时,编译器无法自动推断出返回值类型,此时必须指定返回值类型。 auto Add = [](int a, int b) { return a + b; }; cout << Add(1, 2) << endl; 二、捕获列表 有时候,需要在匿名函数内使用外部变量,所以用捕获列表来传递参数。 根据传递参数的行为,捕获列表可分为以下几种: 值捕获。 与参数传值类似,值捕获的前提是变量可以拷贝,不同之处则在于:被捕获的变量在 lambda 表达式被创建时拷贝,而非调用时才拷贝。int c = 30