2

可能重复:
什么是 C++11 中的 lambda 表达式?

我在 C++ 中找到了这个表达式(C++11 最令人兴奋的特性之一):

int i = ([](int j) { return 5 + j; })(6);

为什么我得到11?请解释这个表达式。

4

1 回答 1

13

[](int j) { return 5 + j; }是一个将 aint作为参数并调用它的 lambda j。它将 5 添加到此参数并返回它。after 表达式立即调用 lambda,因此(6)您将 6 和 5 加在一起。

它大致相当于这段代码:

int fn(int j) {
    return 5 + j;
}

int i = fn(6);

当然,除了它不创建命名函数。智能编译器可能会内联 lambda 并进行常量折叠,从而简单地减少到int i = 11;.

于 2012-10-07T01:42:04.837 回答