switch case expressions

Martin Krejcirik via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 23 13:22:25 PDT 2015


void main(string[] args)
{
     int a = 1;
     int b = to!int(args[1]);
     uint c = 2;

     switch (a)
     {
         case b: break; // OK
         case c: break; // Error: variable c cannot be read at 
compile time

         default: break;
     }
}

Switch spec says:
The case expressions must all evaluate to a constant value or 
array, or a runtime initialized const or immutable variable of 
integral type. They must be implicitly convertible to the type of 
the switch Expression.

So, should the case b compile or not ? Is the spec too 
restrictive here, or is it a bug ?

I was initially working to fix the case c (to allow casts), but 
this should be clarified.


More information about the Digitalmars-d mailing list