Gzp wrote:
bearophile wrote:
Andrei Alexandrescu:
* Encode operators by compile-time strings. For example, instead of
the plethora of opAdd, opMul, ..., we'd have this:
T opBinary(string op)(T rhs) { ... }
The string is "+", "*", etc.
Can you show an example of defining an operator, like a minus, with that?
In my set data structure I'd like to define "<=" among two sets as "is
subset". Can that design allow me to overload just <= and >= ? (opCmp
is not enough here).
Bye,
bearophile
And what about the unary operators. Sorry I was not following the
opBinary thread from the beginning, so it might have been discussed
before. If opBinary has a syntax like this, unary operators require
something like this at least just for completeness.
Yes; opBinary was just given as an example. Unary operators look like this:
T opUnary(string op)();
(And maybe trinary operators ?: ) :)
Can they still be overloaded ? Will they have a similar syntax ? If so
what about the e++ and ++e operators? How they are distinct ? Or is the
latter eliminated from the language ?
Though, I like the idea, just a quick look at a code and you can see all
the operators in a place.
Bye, Gzp
I think user code should only define ++e. Then the compiler can use that
to define e++.
Andrei