foreach over pointer to range

Timon Gehr timon.gehr at gmx.ch
Tue Jun 5 11:46:51 PDT 2012


On 06/05/2012 08:42 PM, Artur Skawina wrote:
> "foreach (e; pointer_to_range)" currently fails with:
>
>     Error: foreach: Range* is not an aggregate type
>
> It can be worked around with
>
>     struct RangePtr(R) {
>        R* ptr;
>        alias ptr this;
>        @property front()() { return ptr.front; }
>     }
>
> but this adds unnecessary overhead (unfortunately such struct is not
> always treated the same as a real pointer, eg when passing it around).
>
> Is there some reason that makes the is-aggregate check necessary, or could
> it be dropped?
>
>
> Thanks,
>
> artur

It should be dropped. A pointer to range is a perfectly fine range.


More information about the Digitalmars-d mailing list