On 06/05/12 22:41, simendsjo wrote: > On Tue, 05 Jun 2012 22:38:22 +0200, Artur Skawina <art.08...@gmail.com> wrote: > >> On 06/05/12 22:23, simendsjo wrote: >>> On Tue, 05 Jun 2012 20:46:51 +0200, Timon Gehr <timon.g...@gmx.ch> wrote: >>> >>>> >>>> It should be dropped. A pointer to range is a perfectly fine range. >>> >>> >>> Sure..? I couldn't get it to work either: >>> struct R { >>> string test = "aoeu"; >>> @property front() { return test[0]; } >>> @property bool empty() { return !test.length; } >>> void popFront(){test = test[0..$];} >>> } >>> >>> void main() { >>> R r; >>> R* p = &r; >>> foreach(ch; p) // invalid foreach aggregate p >>> writeln(ch); >>> } >> >> It /is/ a valid range, but it's /not/ currently accepted >> by foreach. >> > (...) >> >> which works, but only obfuscates the code and can be less efficient. > > Well, then it's not a *perfectly fine* range, is it then :)
It *is* a perfectly fine range; the problem is with 'foreach'. artur