On Wednesday, 14 October 2015 at 15:02:02 UTC, Shriramana Sharma
wrote:
Hello. I just came upon a need in my program to make binary
arithmetic operators valid between two real[] in my programs,
and thought of writing a global opOpAssign, but then looked
through the documentation, found nothing on operator
overloading allowed at the global level (even within a single
module), and searched through the forum and saw this thread:
http://forum.dlang.org/post/jeyaozvegcnivcppu...@forum.dlang.org
Why isn't global operator overloading allowed in D?
Having to construct a class just to write a quick operator
overload for two built-in types isn't a clean solution, so
please don't suggest that (like it was suggested in the other
thread).
Thanks.
Shriramana Sharma.
Is Writing a global function an option ? With UFCS it will still
look correct...
And under the hood, an operator overload is a function anyway.
With string template parameter it could even display the symbol:
(not tested but you shoud get the idea)
---
void assignResultOf(string op, L, R)(ref L lhs, ref R rhs) {}
assignResultOf!"+"'(dest, src);
dest.assignResultOf!"+"'(src);
---
otherwise struct + alias this + member operator overload is the
most obvious way to overcome the problem...but it seems you don't
like this.