Compiler bug?

IM 3di at gm.com
Fri Dec 29 07:30:43 UTC 2017


The following code:

   int guess;
   readln().formattedRead!"%d"(guess);

produces the following compiler error:

Error: template std.format.formattedRead cannot deduce function 
from argument types !("%s")(string, int), candidates are:
/usr/include/dmd/phobos/std/format.d(635):        
std.format.formattedRead(alias fmt, R, S...)(ref R r, auto ref S 
args) if (isSomeString!(typeof(fmt)))
/usr/include/dmd/phobos/std/format.d(644):        
std.format.formattedRead(R, Char, S...)(ref R r, const(Char)[] 
fmt, auto ref S args)

That is odd! I expected this to match:

   uint formattedRead(alias fmt, R, S...)(ref R r, auto ref S args)

However, the following works!!!

   int guess;
   string line = readln();
   line.formattedRead!"%d"(guess);


This definitely looks like a bug, but I want to confirm first 
before filing one.



More information about the Digitalmars-d mailing list