Раздел §24.1 / 5 из стандарта C ++ (2003) гласит:
Так же, как обычный указатель на массив гарантирует, что существует значение указателя , указывающее за последний элемент массива , поэтому для любого типа итератора существует значение итератора th в точках за последним элементом соответствующего контейнера . Эти значения называются значениями после окончания. Значения итератора i, для которого определено выражение * i, называются разыменуемыми. Библиотека никогда не предполагает, что значения за пределами конца могут быть разыменованы. Итераторы также могут иметь особые значения, которые не связаны ни с каким контейнером. [Пример: после объявления неинициализированного указателя x (как с int * x;) всегда предполагается, что x имеет сингулярное значение указателя.] Результаты большинства выражений не определены для сингулярных значений; единственное исключение - это присвоение неособого значения итератору, который содержит единственное значение . В этом случае единственное значение перезаписывается на так же, как и любое другое значение. Разыменяемые значения всегда неособые.
Я не могу понять текст, выделенный жирным шрифтом ?