UFCS and operator overloading

Nick Sabalausky SeeWebsiteToContactMe at semitwist.com
Mon May 7 13:37:07 PDT 2012


"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)





More information about the Digitalmars-d mailing list