static foreach considered
via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 9 03:17:43 PDT 2015
On Monday, 8 June 2015 at 22:12:06 UTC, Idan Arye wrote:
> On Monday, 8 June 2015 at 21:32:52 UTC, Timon Gehr wrote:
>> I think the body should have access to a scope that is hidden
>> from the outside which contains the loop variable, but
>> declarations should be inserted into the enclosing scope like
>> for static if.
>
> This would require some syntax to mark the declarations we want
> to expose. Maybe `out`?
>
> This is far better than the mixin template approach, since
> it'll alert us early about conflicts:
>
> static foreach (ident; ["a", "b", "a"])
> {
> int mixin(ident ~ "1");
> out int mixin(ident ~ "2");
> }
>
> `a1` is created twice, but that's OK since it isn't marked with
> `out`. `a2` is declared twice and raises a compilation error
> because it's marked with `out`. This will ensure these kind of
> errors are detected early and the compilation error points to
> the exact place of declaration.
static foreach (ident; ["a", "b", "a"])
{
private int mixin(ident ~ "1");
int mixin(ident ~ "2");
}
More information about the Digitalmars-d
mailing list