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

Reply via email to