Supporting and signature-checking all foreach variations

Jesse Phillips jessekphillips+D at gmail.com
Sat Feb 25 20:53:29 PST 2012


On Saturday, 25 February 2012 at 16:26:05 UTC, Ashish Myles wrote:

> 2. Secondly, TDPL on page 381 says that foreach iterates over 
> C[], if
>   C defines the opSlice() function without any arguments.
>   However the code above doesn't seem to work and requires me to
>   explicitly invoke the slice operator myself like
>     foreach(p; C[]) { ... }
>   when my data structure clearly defines the following 
> functions.
>     Point3[] opSlice() { return _cpts[]; }
>     const (Point3)[] opSlice() const { return _cpts[]; }
>   Is this a misunderstanding on my part or an unimplemented 
> feature?

Is not implemented, not seeing a bug report
http://d.puremagic.com/issues/

> 3. A more general question: Is there any by any chance a way to 
> avoid the
>   redundancy above of defining two opSlice() functions (or two 
> opAssign()
>   functions if I went that route -- one for const and another 
> for ref)?
>   I suspect that the answer is no, but I just wanted to verify.

Not sure look into information on 'auto ref' and 'inout' these
were built for removing duplications of const and ref functions.
These have had some work done to make them functional, but could
still have holes.


More information about the Digitalmars-d-learn mailing list