Rational of some DMD decisions
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Feb 8 16:35:09 PST 2015
On 02/08/2015 01:05 PM, Robin wrote:
> the postfix inc and decrement expressions are
> inherited from BinExpr (binary expression) which define their second
> expression to be an integer expression with a value of 1.
Post-increment cannot be overloaded in D. It is always implemented in
terms of pre-increment (or +=):
http://dlang.org/operatoroverloading.html
Although I can't find it on the spec, I think it used to be spelled out
that pre-increment (and post-increment) could be the equivalent of "+=
1". I am pretty sure about that because my notes say so! :p (because I
based everything on what I knew to be correct at the time).
http://ddili.org/ders/d.en/operator_overloading.html
Quoting myself:
"if an opBinary overload supports the duration += 1 usage, then opUnary
need not be overloaded for ++duration and duration++. Instead, the
compiler uses the duration += 1 expression behind the scenes. Similarly,
the duration -= 1 overload covers the uses of --duration and duration--
as well."
Perhaps that's why the compiler uses a binary operator for post-increment.
Ali
More information about the Digitalmars-d-learn
mailing list