yank unary '+'?
Walter Bright
newshound1 at digitalmars.com
Sun Dec 6 13:04:02 PST 2009
Don wrote:
> Walter Bright wrote:
>> 3. used with operator overloading to convert a user defined type to
>> its preferred arithmetic representation (a cast can't know what the
>> 'preferred' type is)
> > 5. to coerce default integral promotion rules (again, cast(int) won't
> > always produce the same result)
>
> This one is interesting, and might be the strongest argument, but I
> don't understand it. An example would be interesting.
Integral promotion rules:
byte b;
+b => int
dchar dc;
+dc => uint
long l;
+l => long
cast(int)l => Oops! lost some bits
user defined type:
struct S
{
long opCast() { ... }
S opAdd(ref S) { ... }
}
S s;
+s => long result
s + s => S result
s + +s => long result
s + cast(int)s => Oops! lost some bits!
More information about the Digitalmars-d
mailing list