C++ guys hate static_if?

Timon Gehr timon.gehr at gmx.ch
Mon Mar 11 14:31:53 PDT 2013


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.

> and it would be _way_ less useful if it did,

I don't think so.

> 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.



More information about the Digitalmars-d mailing list