static foreach and new identifier names

Timon Gehr timon.gehr at gmx.ch
Fri Jan 5 18:32:10 UTC 2018


On 05.01.2018 18:41, Adam D. Ruppe wrote:
> Y'all know if we write this:
> 
> static foreach(foo; [1,2,3]) {
>          int blargh = foo;
> }
> 
> we get:
> 
> e2.d(2): Error: variable e2.__anonymous.blargh conflicts with variable 
> e2.__anonymous.blargh at e2.d(2)
> e2.d(2): Error: variable e2.__anonymous.blargh conflicts with variable 
> e2.__anonymous.blargh at e2.d(2)
> 
> 
> because it expands to
> 
> int blargh = 1;
> int blargh = 2;
> int blargh = 3;
> 
> all in the same scope. This makes static foreach of fairly little value 
> to me - most times I have considered using it, I end up just using plain 
> old string mixin instead so i can generate names for the declarations.
> ...
See "limitations" section of DIP 1010 for my thoughts:
https://github.com/dlang/DIPs/blob/master/DIPs/DIP1010.md

(Mixin identifiers are among them. You might also like __local 
declarations.)

Also see: http://forum.dlang.org/post/ooo9kt$1dnf$1@digitalmars.com


More information about the Digitalmars-d mailing list