Если вы посмотрите на ссылку , вы заметите, что она объявлена как boost::single_pass_traversal_tag
.
Это эквивалент (в терминологии буста) Итератора ввода в STL (его можно рассматривать как итератор, доставляющий пакеты из сетевого подключения, перемотка назад невозможна).
Также обратите внимание (с этой же страницы):
i == j
не означает, что ++i == ++j
.
В этот момент можно задаться вопросом, почему его можно скопировать. Причина в том, что алгоритмы STL установили норму, принимая свои аргументы за копию. Поэтому он не может быть использован с алгоритмами STL, если его невозможно скопировать.