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?