Glen Edmonds <glen.edmonds@gmail.com> writes: > The problem really is that the two states of not initialized and post first > usage are indistinguishable (both return 1), but the sequence next value is > different.
They're not indistinguishable: if you look at the is_called flag you'll see that it changes.
Correct, the boolean is a superior solution to defining null to mean something. A bit more verbose but equally functional and easier to read.
> ie it’s a reasonable expectation that the next value is > last_value + 1. IMHO violating this makes it a bug.
You can call it that if you like, but it's operating as designed and documented. I fear it's about twenty years too late to propose a redesign.
And next_value isn't last_value + 1 in any case since we have a block caching feature. One cannot predict (i.e., without consuming) the next_value from current state.