Mon, 19 Jan 2009 09:47:14 +0900, Bill Baxter wrote:

> On Mon, Jan 19, 2009 at 9:16 AM, Andrei Alexandrescu
> <seewebsiteforem...@erdani.org> wrote:
> 
>>> Unless it's a class you mean?
>>
>> Yah, ranges are meant to have value semantics. If you have a class container
>> exposing ranges, define the range separately from the container itself:
>>
>> MyIterable collection;
>> foreach (element; collection.all) {}
>> foreach (element; collection.all) {}
> 
> Add .opRange so that's not necessary?  Or allow opApply to return a range?
> Otherwise it looks like a step backwards.

I already proposed that foreach should first try collection.opSlice()
and work with that if successful, otherwise resort to iterating over the
collection itself.  You would probably implement opSlice anyway so this
solution comes at little cost.

Reply via email to