In 2.047, a struct could provide a toString that returned a wstring (as opposed to string) and it would get used when passing the struct to writeln. As of 2.048 a toString returning wstring is not detected and the struct's typename is returned instead. toString returning string works fine. Repro: import std.stdio; import std.conv; struct A { wstring toString() { return "blah"; } } void main() { A a; writeln(a); writeln(to!string(a)); writeln(to!wstring(a)); } DMD 2.047: blah blah blah DMD 2.048: A blah blah
Fixed: http://www.dsource.org/projects/phobos/changeset/2172