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