Невозможно удалить элемент из boost multi_index_container ++ - PullRequest
0 голосов
/ 16 мая 2019

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

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

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

1 Ответ

0 голосов
/ 16 мая 2019

Вместо

mapDb.erase(clientIter);

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

clientView.erase(clientIter);

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

...