On Friday, 2 March 2018 at 10:32:08 UTC, Jonathan M Davis wrote:
foreach does not support indices for ranges, only arrays. When
you have
foreach(e; range)
it gets lowered to
foreach(auto __range = range; !__range.empty;
__range.popFront())
{
auto e = __range.front;
}
There are no indices involved there, and if a range isn't a
random-access range, it doesn't support any kind of indices
anyway. The compiler would have to add a variable to count the
elements, and it doesn't support that.
I understand. I guess I was expecting the compiler to
automatically do something along the lines of what enumerate
does. Although, a nicer error message would have saved the day
just as well.
Arredondo