Type deduction using switch case
Xinok
xinok at live.com
Sat Feb 18 16:33:01 PST 2012
While reading "The Right Approach to Exceptions", it gave me this
idea. The user would declare a list of variables of different
types as case statements, and the variable with matches the type
of the switch expression is used.
I don't know how the syntax should look, this is merely an
example:
void foo(T)(T arg){
switch(arg){
case int i:
writeln("Type is int ", i); break;
case float f:
writeln("Type is float ", f); break;
case string s:
writeln("Type is string ", s); break;
default:
writeln("Type is unknown"); break;
}
}
While static if would be more practical for templates, my idea
could be extended to dynamic upcasting of classes as well, which
could be applied to exception handling:
try{ ... }
catch(Throwable err) switch(err){
case IOError a:
break;
case OutOfMemoryError b:
break;
default:
throw err;
}
More information about the Digitalmars-d
mailing list