C++ 通过lambda表达式初始化变量?
我正在尝试使用lambda表达式初始化变量。我没有听说这是否可能,那么这可能吗? 例如:C++ 通过lambda表达式初始化变量?,c++,visual-studio-2012,lambda,C++,Visual Studio 2012,Lambda,我正在尝试使用lambda表达式初始化变量。我没有听说这是否可能,那么这可能吗? 例如: int i([]() { return 1; }); 返回 error C2440: 'initializing' : cannot convert from 'wmain::<lambda_b35514739a4854f3d329a617eabe58c1>' to 'int' 错误C2440:“正在初始化”:无法从“wmain::”转换为“int” 这个操作是否可能,而我的语法仅仅是错误
int i([]() { return 1; });
返回
error C2440: 'initializing' : cannot convert from 'wmain::<lambda_b35514739a4854f3d329a617eabe58c1>' to 'int'
错误C2440:“正在初始化”:无法从“wmain::”转换为“int”
这个操作是否可能,而我的语法仅仅是错误的?您需要调用lambda:
int i( []() { return 1; }() );
// ^^
int i([]() { return 1; }());
// ^^
lambda本身是一个表达式,它包含一个称为闭包对象的prvalue临时值。这些变量不能转换为
int
您尝试使用lambda对象初始化变量,而不是使用lambda求值的结果:
int i( []() { return 1; }() );
// ^^
int i([]() { return 1; }());
// ^^