在类中声明自动lambda函数

问题描述 投票:0回答:1

我试图像这样在类内声明一个lambda比较函数:

class Solve {
private:
    int n, q, first[N+1], depth[N+1], seg[_log(N)+2][(N<<1)+1];
    vector <int> G[N+1], euler;

    auto cmp = [euler, depth] (const int &a, const int &b) -> bool {
        return depth[euler[a]] < depth[euler[b]];
    };
...

但收到错误:error: non-static data member declared with placeholder 'auto'

将函数声明为静态无助:error: capture of non-variable 'Solve::euler' +其他错误。显式使用std :: function <>也无法解决。

该功能拟在min(a, b, cmp);中使用

非常感谢您的帮助!

c++ class lambda stl
1个回答
1
投票

您无法在类定义中创建lambda函数。将其移至构造函数(auto由编译确定,在此处不起作用):

© www.soinside.com 2019 - 2024. All rights reserved.