digitalmars.D.learn - UFCS and error messages
- Andrea Fontana (14/14) Oct 31 2013 Check this simple code:
- bearophile (5/6) Oct 31 2013 Possibly yes. I put this enhancement request in Bugzilla few
- Marco Leise (6/31) Oct 31 2013 If you see it as a universal function call, yes.
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?
Oct 31 2013
Andrea Fontana:Shoudn't "0".is_zero give this error too?Possibly yes. I put this enhancement request in Bugzilla few months ago, but I don't remember its number now. Bye, bearophile
Oct 31 2013
Am Thu, 31 Oct 2013 11:58:18 +0100
schrieb "Andrea Fontana" <nospam 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
Oct 31 2013









"bearophile" <bearophileHUGS lycos.com> 