On 6/30/16 7:50 PM, Walter Bright wrote:
On 6/2/2016 5:51 AM, Steven Schveighoffer wrote:
I have always treated ranges with this expectation:
1. front gets you the current element of the range. Calling front
multiple times
without calling popFront should get you the same value.
2. popFront moves you to the next element of the range if it exists.
Right. Also:
3. empty can be called multiple times in a row, and must always return
the same result.
4. it is not legal to call front() on an empty range, but it is not
required to call empty() first
5. it is not legal to call popFront() on an empty range, but it is not
required to call empty() or front() first.
Jack, can you update the rules to reflect this?
I'd say violating the expectations of what popFront and front do is more
egregious than a particular use case, no matter how valid that case
is. I'd like
to fix this bug, but I see there were quite a few major D contributors
in the
camp that wanted this function to behave the way it is. So I'd rather
first
debate the merits here.
This was debated at length in the past. The result was the rules above.
Ranges that do not follow those rules need to be fixed. I don't think
there's a need to debate it again.
Thank you, I will set up a PR to fix generate.
-Steve