You are right. Even this doesn't work: import std.stdio; class one { } class two : one { } void main() { static if ( is(two T : one) ) writeln("test"); } Additionally it's really strange dmd doesn't complain about TWO and ONE if the aliases are omitted. Seems like two distinct bugs to me. File bug reports.