Begin & end arguments are distasteful boilerplate (safe for these few times when you need a subrange or pointer pair)
Yep, and other languages handle that better by only forcing you to use the iterators for subranges when you need them, which at least at my job is the minority of the time.