On Thursday, 12 December 2013 at 16:52:12 UTC, Joseph Rushton
Wakeling wrote:
On 12/12/13 17:19, Adam D. Ruppe wrote:
Is that guaranteed to work as an input range? I ask because
I've so often written:
T current;
@property T front() { return current; }
that it just seems silly to me to write the extra lines when
current == front. I
realize there is a small difference there, in that front is
not an lvalue here,
but is when it is a direct member, but other than that, is
this an acceptable
form? Or does the lvalue thing mean it is strongly discouraged?
Isn't the issue here not whether or not it will work in terms
of your type being a range, and more that it means that users
can overwrite the value of front?
It seems to me that it would be OK for personal projects where
you control 100% of the code, but it wouldn't be acceptable for
stuff that's intended to be used by other people.
Being able to assign to front is a feature of an output range.