キーとしてパラメーターを持つメンバー関数を使用する boost::multi_index コンテナーを作成しようとしています。
class Data {
public:
std::string get(const std::string & _attr) { return _internals_fetch_data(_attr); }
/*
assume some implementation for storing data in some structure(s)
*/
};
これらのデータ項目の長方形のリストがあり、複数のインデックスが必要だとします。長方形は、リスト内のすべてのアイテムが get() を介して同じ属性を持つことを意味します
boost::multi_index 宣言は次のようなものです
typedef multi_index_container<
Data,
indexed_by<
ordered_unique<
BOOST_MULTI_INDEX_CONST_MEM_FUN(Data,String,get)
>
>
> my_container;
ただし、BOOST_MULTI_INDEX_CONST_MEM_FUNCT()にはこれらの機能がありません。複合キーは引き続きメンバー変数で機能します。
どうすればこれを回避できますか? orderd_unique<> に boost::function1 を与えることができるようには見えません
編集:
少し考えた後、ここに私がやろうとしていることの要点があります。
boost::multi_index は、コンパイル時にインデックス機能を決定します。これらの機能を回避し、実行時に決定されるインデックスを使用するにはどうすればよいですか?