Implicit Conversions
To determine if a user defined type conversion is used, the
compiler checks if a conversion is defined for the type
needed.
If there is, then the compiler checks that the type matches
the type supplied or that the type supplied can be
converted by applying one of the built-in type promotions
or conversions.
Only one such built-in type promotion or conversion will
be applied before applying the user defined type
conversion itself.
Thus, at most one built-in type conversion and at most one
user defined type conversion will ever be implicitly
applied when converting from one type to another.