when using typedefs of structs their constructors return the original type instead of the new type struct Ca { this(int a) { _answer = a / 2; } int _answer; } void testClasses() { typedef Ca Da; Ca a = Ca(84); Da c = Da(84); } tests0.d(38): Error: cannot implicitly convert expression (((Ca __ctmp276 = __ctmp276 = 0; ) , __ctmp276).this(84)) of type Ca to Da A cast is required for the code to work.
Dropping typedef, so won't fix.