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

Reply via email to