http://llvm.org/bugs/show_bug.cgi?id=19921
This patch affects std::complexes additional overloads for arg, conj, imag, norm, proj and real.
For overloads now only participate in overload resolution if they are called with an arithmetic type.
Previously they could be called with types that were convertible to arithmetic types.
The arg and proj functions had to be had to be treated differently than the test of the overloads since the body of their function needs to differ depending on what type was passed it.