User Defined Type Convers.
Type conversions will not help when operators are
members -- because a member is required to have the first
operand as an object of the class; if it converted to some
other type, the member function will not be found as a
possible candidate function and a compile error will result
or the wrong operator will be used (such as the built-in
operators).
Also, when user defined conversions to built-in types have
been specified, the predefined operators may end up being
used even when we use an operator with a user defined
type for which an overloaded operator exists! Overloaded
operators are only invoked if at least one of those operands
is a user defined type.