Apparently it's not a bug, it's feature (I can't begin to fathom why)
At any rate, by replacingwriteln(mixin( "__traits(compiles, t." ~memberName ~" = (" ~typeof(__traits(getMember, T, memberName)).stringof ~").init)" ));
withwriteln(mixin( "__traits(compiles, t." ~memberName ~" = (typeof(t." ~memberName ~")).init)" ));
it works as expected!