2013-07-29 31 views
3

我想用lambda表达式初始化一个变量。我没有听说过这是否可能,那么这可能吗? 例如:用lambda表达式初始化一个变量?

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

返回

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

这是操作成为可能,并且我的语法仅仅是错了吗?

回答

10

您正在尝试初始化与拉姆达对象的变量不求lambda的结果:

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

您需要呼叫拉姆达:

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

拉姆达本身是yiels称为闭包对象临时一个一个prvalue的表达式。这些不能兑换成int