Referencing structs in a foreach

Peter Alexander via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 23 10:35:16 PDT 2014


On Wednesday, 23 July 2014 at 17:23:14 UTC, Alf wrote:
> Thanks for your reply.
> I figured an easier way would be to simply build an array of 
> references:
>
>   foreach (ref f; [&bar.f1, &bar.f2])
>   {
>     f.a++;
>     f.b++;
>   }
>
> It seems to work just fine.

I'd recommend using std.range.only:

foreach (ref f; only(&x, &y)) {
     f.a++;
     f.b++;
}

Using array literals introduces the possibility of an unnecessary 
heap allocation. Using only will never allocate.


More information about the Digitalmars-d mailing list