Compiler bug?

Daniel Kozak kozzi11 at gmail.com
Fri Dec 29 07:50:05 UTC 2017


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 <
digitalmars-d at puremagic.com> 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.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20171229/ab572fc8/attachment.html>


More information about the Digitalmars-d mailing list