0

Boost::variant オブジェクトの multi_index コンテナを実装しようとしています。バリアントは、1 つの共通ベース オブジェクトの 2 つの派生クラスで構成されます。どの派生オブジェクトがバリアントを占有しているかに関係なく、適切なキー値を提供するために、std::pair<char,char> を返す各派生クラス ("extractKey()") に仮想関数を実装しました。

キー値を取得するために、apply_visitor() (おそらくラムダ式で?) を使用して "extractKey()" 関数を CONST_MEM_FUN キー エクストラクタとして呼び出すにはどうすればよいですか? これを達成するために構文を正しくすることができませんでした。

Visual Studio 2019 と C++17 を使用しています。

編集:私はすでに、派生オブジェクトでベースオブジェクトポインターと仮想関数のコンテナーを使用するだけのはるかに健全で従来のソリューションを持っていますが(バリアントはありません!)、根本的に異なるオブジェクト(派生オブジェクトではない)を格納する必要がある場合は、他のシナリオが発生しますmulti_index コンテナー内の共通の基本オブジェクトから)。それが、ここで提起された問題の解決策を見つけたいと思っている本当の理由です。

4

1 に答える 1