6

我正在尝试使用 lambda 表达式初始化变量。我还没有听说这是否可能,所以这可能吗?例如:

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

返回

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

这个操作是否可行,而我的语法只是错误的?

4

2 回答 2

16

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

int i([]() { return 1; }());
//                      ^^
于 2013-07-29T19:00:52.217 回答
10

您需要调用lambda:

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

lambda 本身是一个表达式,它产生一个称为闭包对象的 prvalue 临时值。这些不能转换为int.

于 2013-07-29T19:00:10.207 回答