complex::operator*=

complex& operator*=(const complex& rhs);
complex& operator*=(const T& rhs);

The first member function replaces the stored real and imaginary parts with those corresponding to the complex product of *this and rhs. It then returns *this.

The second member function multiplies both the stored real part and the stored imaginary part with rhs. It then returns *this.

In this implementation, if a translator does not support member template functions, the template:

template<class U>
    complex& operator*=(const complex<U>& rhs);

is replaced by:

complex& operator*=(const complex& rhs);