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);
template<class T>
    complex<T> operator-(const complex<T>& lhs);

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

The unary operator returns a value whose real part is -real(lhs) and whose imaginary part is -imag(lhs).