Я слышал в разговоре, что ключи в C ++ 0x ассоциативных контейнерах больше не являются изменяемыми . Раньше в C ++ 03 они были изменяемыми, и только в тексте Стандарта говорилось, что порядок или ключи должны оставаться неизменными.
Теперь, к счастью, это незаконно:
std::set<int> ss { 2,5,1,6,8,5,8,0,2,4,9 };
auto it = ss.find(4);
*it = 7; // 'ERROR: assignment of read-only location'
Где это изменение отражено в C ++ 0x? Я посмотрел Final Draft, но все еще вижу, что find()
и такие возвраты iterator
- это звучит модифицируемо. (И почему это и нужно предположить: контейнеры типа map
хотят разрешить изменение значения . Что именно изменилось, чтобы сделать key -part const?)