It is unclear from the specs if null should be exact matched against nullable types during IFTI. Now it works only for void*. class C { } void foo(T)(T x, C c) // C - a nullable type { } void main() { foo(1, null); // fails foo(1, cast(C)null); // ok } Is it by design?