Modern C++ Lamentations

Timon Gehr timon.gehr at
Sun Dec 30 02:55:24 UTC 2018

On 29.12.18 23:01, Steven Schveighoffer wrote:
> I'm wondering if some generic "emulate N nested loops" with given 
> stopping and starting conditions might be a useful addition for 
> std.range or std.algorithm. I'm thinking of other looping algorithms 
> like Floyd Warshall that might benefit from such building blocks.
> -Steve

cartesianProduct suffices for Floyd-Warshall:

     .each!((k,i,j){ d[i][j]=min(d[i][j],d[i][k]+d[k][j]); });

For loops where nested ranges depend on outer indices, 'then' goes a 
long way. It is also easy to do something like:

mixin(comp!q{(i,j,k) | i in iota(n), j in iota(i), k in iota(j)})

This would expand to:


(Of course, right now, tuples are somewhat inconvenient to use.)

More information about the Digitalmars-d mailing list