Имам boost multi_index_container, съхраняващ куп местоположения със следния индекс
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<
boost::multi_index::tag<Slot>,
boost::multi_index::identity<SlotData>
>, //ordered_unique
boost::multi_index::ordered_non_unique<
boost::multi_index::tag<Level>,
SlotData::ExtractZ
>, // ordered_non_unique
...//index by
.//typedef as SlotLocations
В тази дефиниция смятам, че индексът по подразбиране ще бъде от ordered_unique
въз основа на Slot
. По-късно имам итератор SlotLocations::iterator
, който искам да използвам, за да съхраня резултата от търсене, базирано на Level
, което е ordered_non_unique
:
typedef SlotLocations::index<Level>::iterator MIterator;
std::pair<MIterator, MIterator> range = map.get<Level>().range(..some conds..);
SlotLocations::iterator itr = range.first; //error
Търсенето в диапазон работи и връща желания резултат, съхранен в range
, но този код няма да се компилира с маркирани линии, като дава следната грешка:
error: no match for 'operator='
Защо не мога да присвоя/съхраня итераторите по този начин? И какви са възможните начини за съхраняване на итератора на резултатите от търсенето?