C++ 使用 lambda 初始化变量

C++ initialize variable with lambda

#include <iostream>

using namespace std;

int main()
{

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


   cout <<"temp "<< temp;

   return 0;
}

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

#include <iostream>

using namespace std;

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

    static bool temp(lambda());


   cout <<"temp "<< temp;

   return 0;
}

它会执行它。我在这里错过了什么?

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

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

LIVE


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