foreach over pointer to range

simendsjo simendsjo at gmail.com
Tue Jun 5 13:41:51 PDT 2012


On Tue, 05 Jun 2012 22:38:22 +0200, Artur Skawina <art.08.09 at gmail.com>  
wrote:

> On 06/05/12 22:23, simendsjo wrote:
>> On Tue, 05 Jun 2012 20:46:51 +0200, Timon Gehr <timon.gehr at 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.
>
> artur

Well, then it's not a *perfectly fine* range, is it then :)


More information about the Digitalmars-d mailing list