オブジェクト ポインターのセットを持つクラスがあり、いくつかのフィールド (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;};