On Monday, October 23, 2023, Matthew Taylor via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
I don't think it's particularly common that you will want a loop where you don't use an element of the range you're iterating over and you don't want to use the index; and that not only is a for loop the best tool for the job but also none of the alternatives
which have been presented to you are a viable option.
I had proposed before that all 'for' loops should have an implicit variable '__i' keeping count of the iterations, something like:
for ( auto &e : my_vector ) SomeFunc( e, __i );
Of course it gets more complicated if you have nested loops, like in the following:
for ( auto &vec : vector_of_vectors )
{
SomeOtherFunc( e.Method(), __i + 1u );
for ( auto &e : vec )
{
SomeFunc( e, __i );
}
}
but we could simply dictate that the '__i' refers to the counter for the innermost loop. To make it more elaborate, the counters of outer loops could be accessed from within the inner loopwith '__i[-1]' and '__i[-2]', but the committee probably won't have an appetite for that.