Operator overloading -- lets collect some use cases

Chad J gamerchad at __spam.is.bad__gmail.com
Mon Dec 29 12:25:14 PST 2008

Don wrote:
> There's been some interesting discussion about operator overloading over
> the past six months, but to take the next step, I think we need to
> ground it in reality. What are the use cases?
> I think that D's existing opCmp() takes care of the plethora of trivial
> cases where <, >= etc are overloaded. It's the cases where the
> arithmetic and logical operations are overloaded that are particularly
> interesting to me.
> The following mathematical cases immediately spring to mind:
> * complex numbers
> * quaternions (interesting since * is anti-commutative, a*b = -b*a)
> * vectors
> * matrices
> * tensors
> * bigint operations (including bigint, bigfloat,...)
> I think that all of those are easily defensible.
> But I know of very few reasonable non-mathematical uses.
> In C++, I've seen them used for iostreams, regexps, and some stuff that
> is quite frankly bizarre.
> So, please post any use cases which you consider convincing.


dstring (okay, mtext now, damn new aliases *grumble grumble*)

Call chaining.
Notice the `Stdout ("abc") ("def") (3.14);  => abcdef3.14`

Hybrid uses opCall and opIndex to do some of its fancy stuff.

More information about the Digitalmars-d mailing list