operator*

template<class T>
    complex<T> operator*(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator*(const complex<T>& lhs, const T& rhs);
template<class T>
    complex<T> operator*(const T& lhs, const complex<T>& rhs);

The operators each convert both operands to the return type, then return the complex product of the converted lhs and rhs.