Is there a good reason forward_iterator requires sentinel_for, and not just comparable with an arbitrary sentinel?
Yeah, in general it's needed for algorithms to be able to compare iterators to other iterators into the same range (for forward)