Чтобы ответить на ваш вопрос «Нет», они не остановятся, так как ответственность за проверку границ лежит на владельце.
Однако можно поместить проверки в прокси-итератор и применить проверки границ.Это будет стоить вам, хотя, скорее всего, будет цена, чтобы заплатить.Большинство алгоритмов std теперь имеют first / last и для входных, и для выходных итераторов (см. Std :: copy (first_in, last_in, first_out, last_out) и будут проверять границы наряду с теми, которые не принимают конец вывода какне всегда является допустимой операцией (например, конец потока неизвестен до тех пор, пока это не произойдет)
Вы можете написать прокси-сервер итератора, который содержит копию итератора, первую позицию и последнюю позицию. Затем проверьтеесли он выйдет за пределы оператора ++, operator-- и при доступе к членам или разыменованию. Это почти такая же работа, как написание константы каркаса, и его можно использовать как таковой. Для небольшого примера см. Пример итератора-посредника и затем используется Пример использования прокси-сервера итератора