UFCS and operator overloading

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Mon May 7 13:57:42 PDT 2012


Still, not having non-member operator overloads is very bothersome.

On Tue, May 8, 2012 at 12:37 AM, Nick Sabalausky
<SeeWebsiteToContactMe at semitwist.com> wrote:
> "Jens Mueller" <jens.k.mueller at gmx.de> wrote in message
> news:mailman.391.1336410464.24740.digitalmars-d at puremagic.com...
>> Hi,
>>
>> from my understanding UFCS is supposed to work with operator overloading.
>> I.e.
>> in the following a + b should work
>>
>> struct Foo {}
>>
>> Foo opBinary(string op)(Foo lhs, Foo rhs) if (op == "+")
>> {
>>    return Foo.init;
>> }
>>
>> unittest
>> {
>>    Foo a, b;
>>    a + b; // fails to compile
>> }
>>
>> Is UFCS supposed to work with operator overloading, isn't it?
>>
>> Jens
>
> I don't know why that doesn't work (unless you just need to make it "auto c
> = a + b;" so it isn't a "statement has no effect"?), but FWIW that's not an
> example of UFCS. UFCS would mean calling your opBinary above like this:
>
> a.opBinary!"+"(b)
>
> Instead of this:
>
> opBinary!"+"(a, b)
>
>
>



-- 
Bye,
Gor Gyolchanyan.


More information about the Digitalmars-d mailing list