On 09/18/2011 10:21 PM, dsimcha wrote:
On 9/18/2011 4:16 PM, Timon Gehr wrote:
What would it return?
A dummy type, e.g.:
struct Repeat(T) {
T val;
T front() @property { return val; }
void popFront() {}
enum empty = false;
static struct Dollar {}
Dollar opDollar() {
return Dollar.init;
}
auto opSlice(size_t lower, Dollar dollar) { return this; }
}
void main() {
auto r = Repeat!int(1);
auto r2 = r[666..$];
}
Ok, but what about
void main(){
auto r = Repeat!int(1);
auto r2 = r[666..$-1]; // ok, return entire range
auto r3 = r[666..$/2]; // ditto
auto r4 = r[666..$<100?$:100]; // ???
// those could be made illegal:
auto r5 = r[666..$*0]; // ???
auto r6 = r[666..$-$]; // ???
auto r7 = r[666..2*$-$]; // ???
auto r8 = r[666..($*$)%4==3?667:668]; // ???
}