I have been reading "The C++ Programming language, third edition (special edition)". Reading through section 11.3.2 made me realize that user defined types could use another feature like "type promotion" to get closer to types supported by the language. To support Mixed mode arithmetic the number of operators defined is 5 in section 11.3.2.
I was wondering if we have a promotion operator.
For example, lets say we have a reserved keyword promotion and we could do the following
Complex& operator promotion(double d)
this->im = 0;
this->re = d;
The promotion operator could be invoked whenever we encounter a type in an operator that is not of the same class as the operator.
2 + c // where c is complex
Could invoke a promotion operator with a new temporary created by the compiler
In effect, it would be equal to
t = new Complex();
c.operator+(t.operator promotion(2), c)
I think this would simpifly the permutations, combinations needed to develop a good usable user defined type.