This code: ========== module scratch; import std.conv; void main() { char[ 256 ] buf; auto s = to!string( buf ); } ========== Produces this error. This appears to be 2.50 specific, since the code from which this test case derives has been working for some time under .49 ========== $ dmd -run scratch.d d:\Devel\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(95): Error: template std.conv.toImpl(T,S) if (!implicitlyConverts!(S,T) && isSomeString!(T) && isInputRange!(Unqual!(S)) && isSomeChar!(ElementType!(S))) toImpl(T,S) if (!implicitlyConverts!(S,T) && isSomeString!(T) && isInputRange!(Unqual!(S)) && isSomeChar!(ElementType!(S))) matches more than one template declaration, d:\Devel\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(110):toImpl(T,S) if (!implicitlyConverts!(S,T) && isSomeString!(T) && isInputRange!(Unqual!(S)) && isSomeChar!(ElementType!(S))) and d:\Devel\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d(220):toImpl(T,S) if (isStaticArray!(S)) ========== It's worth noting that the error message is pretty much incomprehensible due to the enormously long template conditions, and that it doesn't refer at all to the original source line.
Compiles fine under 2.059