C++ 什么是“;[变量]{…;}”;什么意思?

C++ 什么是“;[变量]{…;}”;什么意思?,c++,constexpr,C++,Constexpr,return[value]应该做什么 constexpr int Increment(int value) { return [value] { return value + 1; }(); }; 这个代码演示了C++的一个特性,即可以生成一个LAMDA。这在c++17之前是不可能的。返回时调用lamda表达式 #include <iostream> constexpr int Increment(int value) { return [value] { re

return[value]应该做什么

constexpr int Increment(int value) 
{
    return [value] { return value + 1; }();
};

<>这个代码演示了C++的一个特性,即可以生成一个LAMDA。这在c++17之前是不可能的。返回时调用lamda表达式

#include <iostream>

constexpr int Increment(int value) {
    return [value] { return value + 1; }();
};


int main()
{
    Increment(10);
    static_assert(11 == Increment(10), "Increment does not work correctly");

    return 0;

}
#包括
constexpr int增量(int值){
return[value]{return value+1;}();
};
int main()
{
增量(10);
静态_断言(11==增量(10),“增量无法正常工作”);
返回0;
}

“为什么使用lambda表达式?”PeeBek:这是一个问题,可以通过通知用户C++中的lambda表达式来回答。因此,它有资格作为副本。不,问题不在于这是否“适当”;这显然是关于所涉及的语法结构的意义。@Nicolas--no。问题是关于编写lambda表达式并立即调用它,而不是简单地编写lambda中的代码。使用lambda表达式实现返回值+1的功能是什么不起作用?你在什么上下文中找到了这段代码?@PeteBecker我取消了删除并更新了我的。如果
Increment
的主体只是
返回值+1,那么代码是否也能起作用?老实说,我觉得这类问题没有多大价值。我们无法猜测作者打算展示什么样的语言特征。