Operator overloading through UFCS doesn't work
Tommi
tommitissari at hotmail.com
Sun Oct 14 00:01:29 PDT 2012
On Sunday, 14 October 2012 at 06:22:03 UTC, Maxim Fomin wrote:
> On Saturday, 13 October 2012 at 17:01:27 UTC, Tommi wrote:
>> Another way to describe my reasoning...
>>
>> According to TDPL, if var is a variable of a user-defined
>> type, then:
>> ++var
>> gets rewritten as:
>> var.opUnary!"++"()
>
> Not always. If user-defined type has an alias this to integer
> member, than something different would happen.
Yeah, I wasn't specific enough with that example.
> It would be also interesting to see, how operation ++T would
> differ because somebody imported module with opUnary method.
> Because opUnary suits better than alias this, dmd will issue
> call to that function, it it see its declaration.
Actually, it seems that alias this has precedence over UFCS. So,
a free function opUnary wouldn't ever suit better than an actual
method opUnary of the thing referred to by that alias this.
More information about the Digitalmars-d-learn
mailing list