"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.