This code: import std.stdio;
class A { void get (T:ubyte)(T[] buffer) { writefln( "get (T:ubyte)(T[] buffer)\n"); } void get (T:byte)(T[] buffer) { writefln( "get (T:byte)(T[] buffer)\n"); } void get (T)(T[] buffer) { writefln( "get (T)(T[] buffer)\n"); } } void main () { A foo = new A; ubyte[100] ub; byte[100] bb; int[100] ib; foo.get( ub); foo.get( bb); foo.get( ib); } Generates: get (T:ubyte)(T[] buffer) get (T:ubyte)(T[] buffer) get (T)(T[] buffer) Note: If "get(T:byte)" preceeded "get(T:ubyte)" then "get(T:byte)" would be called in both cases. Q: Is this the way it's supposed to be? Thanks, Larry