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

Adam D. Ruppe destructionator at gmail.com
Thu Dec 12 08:19:28 PST 2013


Consider the following:

struct JustZeroes {
     int front = 0;
     enum bool = false;
     void popFront() {}
}

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?


More information about the Digitalmars-d-learn mailing list