With dmd1.022 : void foo(T)(out T[] p) { //... } void foo(out int p) { //... } test.d(7): function test.foo conflicts with template test.foo(T) at test.d(2)