2013/10/30 TONGARI J
2013/10/30 Evgeny Panasyuk
1. So, span(first, n) and span(next(first), n) will result in "equal" iterators?
No.
if you mean begin-or-end(span(first, n)) == begin-or-end(span(next(first), n)), then yes, but it's pathic.
Suppose we have a sequence S = {1, 2, 3, 4, 5}, &i is the iterator to i. Given first = &1, n = 4, span(first, n)->[begin {.it = &1, .count = 0}, end { .it = &1, .count = 4 }], which results in {1, 2, 3, 4} span(next(first), n)->[begin {.it = &2, .count = 0}, end { .it = &2, .count = 4 }], which results in {2, 3, 4, 5}
2. As I understand, span(first, n) will produce following "iterators": begin {.it = first, .count = 0} end { .it = ???, .count = n }
What is end.it?
end { .it = first, .count = n }
Especially you mentioned that you plan to preserve same range category as original iterator has - what about BidirectionalIterators?
That's my mistake, they should be ForwardIterators.