Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过lambda表达式初始化变量?_C++_Visual Studio 2012_Lambda - Fatal编程技术网

C++ 通过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” 这个操作是否可能,而我的语法仅仅是错误

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

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; }());
//                      ^^