通过lambda表达式初始化变量?

时间:2013-07-29 18:57:35

标签: c++ visual-studio-2012 lambda

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

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

返回

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

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

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:9)

你需要调用 lambda:

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

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