Я использую boost :: multi_index_container (как показано ниже), и я сталкиваюсь с ошибкой компиляции при попытке определить индекс:
struct del_t
{
string del_id;
string dev_version;
};
struct count_container_t
{
uint32_t count_1;
uint32_t count_2;
};
struct mic_t
{
del_t d;
uint32_t p;
string c;
map<uint32_t, count_container_t> b;
};
typedef multi_index_container
<mic_t,
indexed_by
<ordered_unique<member<mic_t,
del_t,
&mic_t::d>
>
>
> super_mic_t;
//The following line is causing the compile error. Compiles fine without it.
typedef super_mic_t::nth_index<0>::type zeroth_index_t;
Сведения об ошибке:
/usr/include/boost/multi_index/detail/base_type.hpp:54: error: invalid use
of incomplete type 'struct
boost::multi_index::ordered_unique<boost::multi_index::member<mic_t,
del_t, &mic_t::d>, mpl_::na, mpl_::na>'
Попробовал варианты использования typename
и template
, но я полагаю, что я не делаю это правильно (поскольку я не понял проблему правильно, чтобы иметь возможность решить ее правильно).
Любая помощь будетБуду признателен.
Спасибо.
PS: я использую 'g ++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)' и 'boost-1.42'.