No it is not a bug, because uint formattedRead(alias fmt, R, S...)(ref R r, auto ref S args) could not match (there is a ref R r) so in your first example you dont have lvalue but rvalue
On Fri, Dec 29, 2017 at 8:30 AM, IM via Digitalmars-d < [email protected]> wrote: > 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. > >
