C++ 用 lambda 初始化变量

deb*_*air 5 c++ lambda initialization

#include <iostream>

using namespace std;

int main()
{

    static bool temp([]{ 
        cout <<"Hi ";
        return false;});


   cout <<"temp "<< temp;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

它不执行 lambda。但是如果我们单独声明 lambda 像:

#include <iostream>

using namespace std;

int main()
{
    auto lambda = []{ 
        cout <<"Hi ";
        return false;};

    static bool temp(lambda());


   cout <<"temp "<< temp;

   return 0;
}

Run Code Online (Sandbox Code Playgroud)

它会执行它。我在这里缺少什么?

son*_*yao 10

您需要调用 lambda,就像第二个代码片段一样。

static bool temp([]{ 
    cout <<"Hi ";
    return false;}());
//                ^^
Run Code Online (Sandbox Code Playgroud)

居住


PS:在第一个代码片段temp中将始终初始化为true,因为没有捕获列表的lambda可以隐式转换为函数指针;这是一个非空指针,然后可以转换为boolwith value true