Да, это предполагаемое поведение. Даже если вы не используете const_iterator, вам обычно нужно обрабатывать содержимое набора как const
. Даже если модификация , которую вы делаете (вероятно), не должна вызывать проблем, для их изменения в общем случае может потребоваться изменить порядок элементов, чтобы сохранить инвариант набора, чтобы элементы всегда были в порядке.
Чтобы они оставались в порядке, вам не разрешается изменять их вообще.
VS 2008 позволил это, но, вероятно, не должен был (как в: стандартном виде позволил, но это определенно не было хорошей идеей). VS 2010 решает проблему (и соответствует новому проекту стандарта), не допуская изменения на месте.
Лекарство заключается в том, чтобы удалить предмет из набора, изменить по необходимости, а затем снова вставить его в набор (или, как вы сделали, выбросить постоянство и молиться, чтобы вы ничего не делали винтами до заказа).