T shadow(T = int)(T a) {
alias T = string;
T b = "hi";
T c = 1; // Error
writeln(typeof(a).stringof); // int
writeln(typeof(b).stringof); // string
return a;
}
Are there uses for this shadowing of type names? It seems a
little dangerous, for example ulong T could be shadowed by uint
T. Is there a reason to allow it?