Я пытаюсь создать контейнер 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() не имеет этих функций. Составные ключи по-прежнему работают с переменными-членами.
Как мне обойти это? Не похоже, что я могу дать order_unique‹> boost::function1
РЕДАКТИРОВАТЬ:
После некоторых размышлений вот суть того, что я пытаюсь сделать.
boost::multi_index определяет функции индексации во время компиляции. Как обойти эти функции и использовать индексы, определяемые во время выполнения?