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. >
Array-alikes/Containers. dstring (okay, mtext now, damn new aliases *grumble grumble*) http://www.dprogramming.com/mtext.php Call chaining. http://www.dsource.org/projects/tango/docs/current/tango.io.Stdout.html Notice the `Stdout ("abc") ("def") (3.14); => abcdef3.14` Hybrid uses opCall and opIndex to do some of its fancy stuff.
