On Thursday, 19 January 2017 at 01:22:56 UTC, Yuxuan Shui wrote:
Somehow I can't use ubyte variables behind 'case', but ulong
works fine. Why is that?
void main() {
alias TestType = ulong; // won't compile if = ubyte
import std.stdio;
TestType a,b,c;
readf("%s %s %s ", &a, &b, &c);
switch(c){
case a: writeln("a");break;
case b: writeln("b");break;
default: assert(false);
}
}
It is a bug that this code compiled.
Case Variables can only be used on const values, to prevent
mutation of them inside the switch itself.
try to make the type a const ubyte.