class Range {
static Range t;

static this() { t = new Range; }

static Range opSlice( int n, int m ) {
t.start = n; t.end = m;
return t;
}

int opApply(int delegate(inout int) dg) {
int result;
for (int i = start; i < end; i++) {
result = dg(i);
if (result) break;
}
return result;
}

int start, end;
}

void main() {
foreach (i; Range[3..8])
writefln(i);
}
既出ですかそうですか