C ++ Boost пространства имен (и не только) имена

Я определяю бустерный мультииндексный контейнер:

namespace bmi = boost::multi_index;
struct DijkstraTriplet {
...
};

typedef multi_index_container <
DijkstraTriplet,
bmi::indexed_by<
bmi::ordered_unique<bmi::member<DijkstraTriplet,size_t,&DijkstraTriplet::linkId> >,
bmi::ordered_non_unique<bmi::identity<DijkstraTriplet> >
>
> DijkstraTripletContainer;

в какой-то момент я заполняю его данными и хотел бы просмотреть один из его индексов. Для этого я определяю итератор:

DijkstraTripletContainer::nth_index<0>::type::iterator it;

(используя старый компилятор). Это невероятно долго и неловко. Чтобы сделать его короче и более читабельным, я добавил следующие строки:

#define dtt0 DijkstraTripletContainer::nth_index<0>::type
#define dtt1 DijkstraTripletContainer::nth_index<1>::type

и затем использовал dtt0 :: iterator (который элегантно короткий, но в то же время уродливый, потому что выражается в терминах #defines). Есть ли более элегантный способ иметь ярлык без #defines? Я ищу что-то такое же элегантное, как

namespace bmi = boost::multi_index;

Комментарии?

1

Решение

typedef DijkstraTripletContainer::nth_index<0>::type dtt0;
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]