[Blog post] Operator overloading for structs in D

Steven Schveighoffer via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Jun 2 11:55:36 PDT 2016


On 6/2/16 2:34 PM, Minas Mina wrote:
> I have written a blog post about operator overloading for structs.
>
> You can find it here:
> https://www.reddit.com/r/programming/comments/4m8mgr/operator_overloading_for_structs_in_d/
>
>
> Comments and suggestions are appreciated.

Cool. You missed one very significant thing. That is using mixins to 
take advantage of the operator string.

For example, opOpAssign can be done in one step:

ref Rational opOpAssign(string op)(auto ref Rational r)
     if(op == "+" || op == "-" || op == "/" || op == "*")
{
     mixin("auto tmp = this " ~ op ~ " r;");
     _n = tmp.n;
     _d = tmp.d;
     return this;
}

This is the whole reason, BTW, that operator overloads were changed from 
the original D1 style versions.

Some more examples of your Rational type in action would be good too.

-Steve


More information about the Digitalmars-d-announce mailing list