0

オブジェクト ポインターのセットを持つクラスがあり、いくつかのフィールド (id) によって並べ替えられた順序でテーマを保存したいと考えています。デバッグのために、私はこれを単純化しました:

#include<iostream>
#include<set>
using namespace std;
struct c{
    auto comp=[](int* i1,int* i2){return *i1>*i2;};
    set<int*,decltype(comp)> seti(comp);
};
int main(){}

私はここでそれらをソートする方法を見つけるために検索し、メイン関数またはクラス/構造の外でそれを使用しようとすると、2番目のアプローチを選択します(c ++ 20を使用できないため)。しかし、私は自分のクラスでそれを使用したいのですが、入手方法がわかりませんでした

auto comp=[](int* i1,int* i2){return *i1>*i2;};

class.i では、グローバル ラムダを使用したくありません。

編集:constexpr static auto comp=[](int* i1,int* i2){return *i1>*i2;};コンパイラでこのエラーが発生します:

m.cpp:4:27: error: ‘constexpr const c::<lambda(int*, int*)> c::comp’, declared using local type ‘const c::<lambda(int*, int*)>’, is used but never defined [-fpermissive]
     constexpr static auto comp=[](int* i1,int* i2){return *i1>*i2;};
4

0 に答える 0