Ok, I see the distinction as compared to regular type promotion. My point is that the Julia never does any implicit type conversion, if you want type conversion you have to invoke it yourself, such as by adding a method for +(::C, ::C) that does the conversion and adds the results.
I think there's several reasons why Julia doesn't do implicit type conversion, including a) making it easier to understand what your code does and b) with multiple dispatch, it's not clear which method signature to convert the arguments to match. Why don't you want to provide a +(::C, ::C) method?
