<分区>
Possible Duplicate:
What is a lambda expression in C++11?
我在 C++ 中发现了这个表达式(C++11 最激动人心的特性之一):
int i = ([](int j) { return 5 + j; })(6);
为什么我得到 11?请解释这个表达式。
<分区>
Possible Duplicate:
What is a lambda expression in C++11?
我在 C++ 中发现了这个表达式(C++11 最激动人心的特性之一):
int i = ([](int j) { return 5 + j; })(6);
为什么我得到 11?请解释这个表达式。
最佳答案
[](int j) { 返回 5 + j;
是一个将 int
作为参数并将其称为 j
的 lambda。它将 5 添加到此参数并返回它。表达式后的 (6)
立即调用 lambda,因此您将 6 和 5 相加。
大致相当于这段代码:
int fn(int j) {
return 5 + j;
}
int i = fn(6);
当然,除了它不创建命名函数。聪明的编译器可能会内联 lambda 并进行常量折叠,从而简单地简化为 int i = 11;
。
关于C++ lambda 表达式(匿名函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765442/