UFCS and error messages
Marco Leise
Marco.Leise at gmx.de
Thu Oct 31 05:10:55 PDT 2013
Am Thu, 31 Oct 2013 11:58:18 +0100
schrieb "Andrea Fontana" <nospam at example.com>:
> Check this simple code:
>
> import std.stdio;
> import std.conv;
>
> bool is_zero(T)(T i) { return to!int(i) == 0; }
>
> void main() { "0".is_zero.writeln; }
>
> This code print "true" of course.
>
> If you replace "to!int(i) == 0" with "i == 0" compiler gives this
> error:
>
> "Error: no property 'is_zero' for type 'string'"
>
> But:
>
> is_zero("0")
>
> instead gives this:
>
> Error: incompatible types for ((i) == (0)): 'string' and 'int'
>
> Shoudn't "0".is_zero give this error too?
If you see it as a universal function call, yes.
But if you see it as an augmented property of string, then no.
--
Marco
More information about the Digitalmars-d-learn
mailing list