Это различие между InputIterator и ForwardIterator: первый принципиально однопроходный, второй допускает несколько проходов.
BFE>вывод в строчках 1 и 2 должен совпадать?
Не должен. И работать тоже не обязан.
Так как directory_iterator — это input iterator. Инкремент может инвалидировать предыдущие ссылки, освобождать ресурсы, и т.п.