我正在尝试制作一个 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()没有这些特性。复合键仍然适用于成员变量。
我该如何解决这个问题?看起来我不能给 ordered_unique<> 一个 boost::function1
编辑:
经过一番思考,这是我正在尝试做的事情的要点。
boost::multi_index 在编译时确定它的索引特性。如何规避这些功能并使用运行时确定的索引?