在与声明相同的行中从 lambda 返回值

Returning value from lambda in the same line with declaration

有时用函数表示一个值会更容易,而 lambda 表达式对此很有用。但是有什么方法可以从 lambda 声明中获取 return 值吗?

例如:

int i = []{return 2;};

生成错误。如何在没有任何新代码行的情况下进行 lambda 声明 return 2

就像使用调用operator()调用任何函数一样,您需要调用lambda。

int i = []{return 2;}();
//                   ^^

除提供的答案外。这称为立即调用的函数表达式 (IIFE),有时也称为立即调用的 lambda 表达式。 (FF来源于C++在其他语言中广泛使用)

int i = []{return 2;}(); // () invokes the lambda AKA call operator