Georg Wrede wrote: > This is usable, easy to read -- and the programmer has no problem to > remember that .. works differently in case statements than in ranges.
You're making two assumptions here: 1. That inclusive ranges are preferable inside 'case' statements. 2. That non-inclusive ranges are preferable outside 'case' statements. I don't buy it. The issue of inclusive versus non-inclusive ranges is *exactly the same* in and outside 'case' statements. // Non-inclusive: foreach (c; start .. middle) doA(c); foreach (c; middle .. end) doB(c); foreach (c; start .. end) { switch (c) { case start .. middle: doA(c); break; case middle .. end: doA(c); break; } } // Inclusive: foreach (c; 'a' ... 'z') doSomething(c); switch (c) { case 'a' ... 'z': doSomething(c); break; } foreach (c; 0 ... int.max) doSomething(c); switch (c) { case 0 ... int.max: doSomething(c); break; } Since I don't accept your assumptions, I see no point in arguing whether or not those assumptions would justify overloading the '..' operator to have one meaning in 'case' statements and another meaning elsewhere. -- Rainer Deyke - rain...@eldwood.com