Should range foreach be iterating over an implicit copy?

Jonathan M Davis jmdavisProg at gmx.com
Thu May 17 11:41:46 PDT 2012


On Thursday, May 17, 2012 13:23:22 Steven Schveighoffer wrote:
> On Thu, 17 May 2012 11:42:04 -0400, Jonathan M Davis <jmdavisProg at gmx.com>
> 
> wrote:
> > On Thursday, May 17, 2012 11:05:46 Steven Schveighoffer wrote:
> >> Hm... proposal:
> >> 
> >> foreach(e; ref r)
> >> {
> >> }
> >> 
> >> equates to your desired code. Would this help?
> > 
> > Or you could just do
> > 
> > for(; !r.empty; r.popFront())
> > {
> > 
> > auto e = r.front;
> > 
> > }
> > 
> > I really don't think that that's a big deal. I don't think that the
> > language
> > change would be worth having yet another thing in the language to
> > remember,
> > particularly when it's so easy to just use for to do the job.
> 
> Probably true. The only one I'd see as being impossible to duplicate is:
> 
> foreach(ref e; ref r)

But that only works if front returns a ref. If it doesn't, the ref would be to 
a local variable (so I don't know if that even compiles). And if front returns 
a ref, all you have to do is use front instead of e. So, no it wouldn't be 
_identical_, but close enough.

- Jonathan M Davis


More information about the Digitalmars-d mailing list