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 

void foo(T)(T 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;
			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:
	case OutOfMemoryError b:
		throw err;

More information about the Digitalmars-d mailing list