Ranges: is it ok if front is a data member?

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Thu Dec 12 08:51:57 PST 2013


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.


More information about the Digitalmars-d-learn mailing list