static foreach considered

Idan Arye via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 8 15:05:48 PDT 2015


On Monday, 8 June 2015 at 21:14:46 UTC, Jonathan M Davis wrote:
> I would assume that it would be pretty much the same as doing
>
> foreach(T; TypeTuple!(...))
> {
>     ...
> }
>
> except that you're not forced to shove everything in a 
> TypeTuple.
>
> - Jonathan M Davis

If that was the case, A library solution for converting a 
compile-time range to a TypeTuple would have 
sufficed(http://dpaste.dzfl.pl/7eb30f5e1156 - this compiles in 
2.67).

The problem with regular `foreach` over type tuple is that 
declarations inside the foreach's body are invisible from the 
outside. If `static foreach` had this limitation, Andrei's 
example wouldn't work since `trace` would be local to the body of 
the `static foreach`. This essentially renders the main usecase 
of this feature(declaring stuff) and leaves us with a loop 
unrolling optimization...


More information about the Digitalmars-d mailing list