Невозможно удалить элемент из boost multi_index_container ++

Сборка на CentOS 7, g ++ 4.8.5-28. Стандарт языка: C ++ 03

Рабочий образец: https://godbolt.org/z/ijSFrK

В методе RemoveMapping вызывается mapDb.erase(clientIter); не удается (см. пример кода в ссылке для фактического кода и ошибки компиляции). Мне интересно, если это из-за нескольких упорядоченных индексов, которые используют составные ключи и методы извлечения ключей?

Всего 1 ответ


Скорее, чем

mapDb.erase(clientIter);

ты должен написать

clientView.erase(clientIter);

Помните, что каждый индекс (представление) имеет свой собственный тип итератора, и вы не можете свободно обмениваться ими. Для удобства сам контейнер (здесь mapDb ) ведет себя как его первый (# 0) индекс, поэтому mapDb.erase может принимать итератор только для serverView .


Есть идеи?

10000