enumerated iteration to struct

Seb seb at wilzba.ch
Wed Feb 7 01:58:05 UTC 2018


On Wednesday, 7 February 2018 at 01:45:27 UTC, Jonathan M Davis 
wrote:
> Perhaps, but foreach does not support that.
>
> foreach(e; range)
> {
>     ...
> }
>
> is lowered to something like
>
> for(auto __range = range; !__range.empty; __range.popFront())
> {
>     auto e = __range.front;
>     ...
> }


Fun fact: an actual lowering from the compiler:

Result __r39 = iota(2).opSlice();
for (; !__r39.empty(); __r39.popFront())
{
	int a = __r39.front();
}


https://run.dlang.io/is/QihjQi

(sorry for being slightly off-topic, but it's always interesting 
for me to check whether our assumptions for of the inner-workings 
of the compiler are true ...)


More information about the Digitalmars-d-learn mailing list