I would rather expect that the limit would restrict size of the result space and that the iterator could be used to freely move inside that limited space while allowing to call get() as often as one likes. So the limit should in my opinion rather be imposed on the move operations than on the get operations.
WDYT? TZ: that makes sense I believe this change is defendable in a feature-level release because - the behavior of shift is quite odd to start with (and IMHO should also be adjusted in other cases) - I would not expect much if any code to actually rely on the shift operator with a negative index WDYT? TZ: AFAIK we are not using any shift operations in our code, so no objections from this side. -Torsten