"Andrej Mitrovic" <andrej.mitrov...@gmail.com> wrote in message 
news:mailman.1581.1297547851.4748.digitalmar...@puremagic.com...
> I'd maybe vote for the syntax change.
>
> But maybe we could extend the array slice syntax to construct ranges:
>
> filter!`a % 2 == 0`([1..5])
> auto r = [0 .. 5];
>
> So if the slice sits on its own it becomes a range. Or is this too
> scary/ambiguous?
>

I like that. It also avoids this ambiguity:

class Foo
{
    opSlice(int a, int b) {}
    opIndex(R)(R r) if(isSomeRange!R) {}
}

auto f = new Foo();
f[1..5] // opSlice with ints, or opIndex with a range?

If a..b requires [] to be a range literal, then the above is unambiguously 
an opSlice with ints, and calling opIndex with a range literal would be 
f[[1..5]].

Not sure why anyone would ever index on a range though, outside of operator 
overload abuse.


Reply via email to