用lambda表达式初始化变量?

6

我想使用lambda表达式初始化一个变量,但我不知道这是否可行。请问这是可以实现的吗? 例如:

int i([]() { return 1; });

这个函数返回

error C2440: 'initializing' : cannot convert from 'wmain::<lambda_b35514739a4854f3d329a617eabe58c1>' to 'int'

这个操作是否可行,只是我的语法有误吗?
2个回答

16

您正在尝试使用lambda对象而不是使用评估lambda的结果来初始化变量:

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

10

您需要调用lambda函数:

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

lambda本身是一个表达式,产生一个名为闭包对象的prvalue临时变量。它们不能转换为int


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接