用 C++ 中的 lambda 表达式初始化

sta*_*mer 4 c++ lambda

我写跟随代码?

static int count = []()->int
                   {
                       int count = 0;

                       for(int i = 0; i < categories.size(); ++i)
                       {
                           if(!categories[i].isCategory())
                           {
                               count++;
                           }
                       }

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

并得到错误:error: cannot convert '__lambda0' to 'int' in initialization。

我的代码片段的含义是分配__lambda0给static int count而不是返回内部计数吗?

Mar*_*cia 8

你不叫它!确保你这样做:

static int count = []()->int
                   {
                       int count = 0;

                       for(int i = 0; i < categories.size(); ++i)
                       {
                           if(!categories[i].isCategory())
                           {
                               count++;
                           }
                       }

                       return count;
                   }();
                 // ^^ THIS THIS THIS THIS
Run Code Online (Sandbox Code Playgroud)

但是,恕我直言,您最好不要使用 lambda。如果您在代码的其他部分使用它,那么将它放在一个独立的(不是 lambda)函数中。