On Monday, 11 March 2013 at 21:31:53 UTC, Timon Gehr wrote:
On 03/11/2013 09:19 PM, Jonathan M Davis wrote:
On Monday, March 11, 2013 20:14:07 Timon Gehr wrote:
Actually, in D, static if creates its own scopes for declarations made
inside the static if condition.

No, it doesn't,

Yes it does.

No... It doesn't. He just showed you.

and it would be _way_ less useful if it did,

I don't think so.

Half the code in phobos would be broken.

particularly with
regards to struct and class definitions. Take this code, for instance,

import std.stdio;

static if(true)
    int var = 7;
else
    string var = 12;

void main()
{
    int i = var;

    static if(is(typeof(var) == int))
        int j = 22;
    else
        float j;

    writeln(j);
}

It compiles just fine and prints 22. Both the static if at module-level and the one in the function declare variables which are used outside of the static if blocks. static if does _not_ create a new scope. And putting braces around the
static if bodies has no effect on the scoping either.

...

What is the point? Your example code does not make any declaration inside the static if condition.

What *are* you talking about??? I can count 4 declarations in 2 static ifs? What is your definition of "declaration" and "scope".

There's a misunderstanding somewhere here. Can YOU show us an example where there is a declaration that is scoped?

Reply via email to