foreach over pointer to range
Artur Skawina
art.08.09 at gmail.com
Tue Jun 5 13:51:31 PDT 2012
On 06/05/12 22:41, simendsjo wrote:
> 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.
>
> Well, then it's not a *perfectly fine* range, is it then :)
It *is* a perfectly fine range; the problem is with 'foreach'.
artur
More information about the Digitalmars-d
mailing list