Thread overview
Static loops
Feb 15, 2014
Tofu Ninja
Feb 15, 2014
bearophile
Feb 15, 2014
Tofu Ninja
Feb 15, 2014
Timon Gehr
February 15, 2014
To me it seems odd that we have a static if but no static while or static for or static foreach.

Basicly all a static loop would do is unroll itself at compile time. The only reason I want this is that currently it is impossible to use a loop variable in any sort of complietime expression such as a static if or a template instantiation.

Was/is something like this planned? Is there a way to get similar functionality now? So far the only way I have found to insert loop variables into a compile time expression is to use a side function to do looping and generate a string for mixins, which is very very very ugly, am I missing somthing?


I saw one thread from 2004 about the same thing with very little replies...
http://forum.dlang.org/thread/c7hjcc$2hph$1@digitaldaemon.com

[Edit]
Ok before I posted this, I did a few more tests and it seems like foreach has this capability somewhat, which is just confusing. Using foreach on a tuple causes it to be evaluated at compile time, which is nice but confusing. Come to think of it, I don't know how you would loop over tuples otherwise...
February 15, 2014
Tofu Ninja:

> To me it seems odd that we have a static if but no static while or static for or static foreach.

See:
https://d.puremagic.com/issues/show_bug.cgi?id=4085

Bye,
bearophile
February 15, 2014
On Saturday, 15 February 2014 at 09:09:59 UTC, bearophile wrote:
> Tofu Ninja:
>
>> To me it seems odd that we have a static if but no static while or static for or static foreach.
>
> See:
> https://d.puremagic.com/issues/show_bug.cgi?id=4085
>
> Bye,
> bearophile

I am glad to see that I am not the only one who is thinking about this. I feel like if foreach on a tuple required static in front of it, it would be much more obvious what was happening. I don't really use tuples that often so when I saw foreach on tuples, it didn't really make sense to me.
February 15, 2014
On 02/15/2014 12:20 PM, Tofu Ninja wrote:
> ...
>
> I am glad to see that I am not the only one who is thinking about this.
> I feel like if foreach on a tuple required static in front of it, it
> would be much more obvious what was happening.  ...

`static foreach' should not introduce a new scope for its body. (but foreach over a tuple should.)