Just for clarification, I wanted '
myrange.at(i)' to be the same as
`myrange.dropExactly(i).front` (so I don't assume it's a random access range).
>> myrange.dropExactly(i).front makes it much more obvious what you're doing and that it's inefficient. It might be necessary in some cases, but we don't want to give the impression that it's cheap, which at() would do.
I think it's already clear that it's potentially O(n) [n=i] cost as we're not using myrange[i]. But fine, call it atWalk/walkAt/whatever. Point is it's a common enough operation.