Я нашел исправление для этой ошибки, которое работает для меня. Я просто заменяю это:
[item addSubitemsObject:subItem];
на это:
item.subitemsObject = subItem;
Единственное отличие должно заключаться в том, что при отмене ссылки на константный итератор вы получаете константную ссылку, а не ссылку на объект в контейнере.
Я считаю, что самый простой способ реализовать итераторы - это boost :: iterator . Если вы хотите использовать свою собственную, я думаю, подпись должна быть:
class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {
с такой же реализацией (при условии, что вы используете reference_type и т.д. в своих сигнатурах функций)
Роджер Пейт, value_типы "простые". Подозреваю, что вы увидите const, если посмотрите на ссылку iterator_traits::const_iterator>::, которая, как мне кажется, будет "const int&".