On Tuesday, July 17, 2012 21:38:51 Eyyub wrote: > On Tuesday, 17 July 2012 at 19:27:54 UTC, Jonathan M Davis wrote: > > It translates > > > > foreach(e; range) > > {} > > > > into something like > > > > foreach(auto __range = range; !__range.empty; > > __range.popFront()) > > { > > > > auto e = __range.front; > > > > } > > > > The compiler knows just enough about ranges to enable foreach, > > but beyond > > that, ranges are entirely a library construct. > > The spec' says "If the foreach range properties do not exist, the > opApply method will be used instead.", does this mean that range > properties take precedence over opApply ?
This post gives the current precedence, but there was some discussion of adjusting it a bit: http://forum.dlang.org/post/mailman.275.1342019430.31962.digitalmars- d...@puremagic.com >From the looks of it, opApply gets precedence right now. But mixing ranges and opApply isn't a good idea in most cases, so it doesn't come up very often. - Jonathan M Davis