# 28 Numerics library [numerics]

## 28.4 Complex numbers [complex.numbers]

### 28.4.5 Member operators [complex.member.ops]

```constexpr complex& operator+=(const T& rhs); ```
Effects: Adds the scalar value rhs to the real part of the complex value *this and stores the result in the real part of *this, leaving the imaginary part unchanged.
Returns: *this.
```constexpr complex& operator-=(const T& rhs); ```
Effects: Subtracts the scalar value rhs from the real part of the complex value *this and stores the result in the real part of *this, leaving the imaginary part unchanged.
Returns: *this.
```constexpr complex& operator*=(const T& rhs); ```
Effects: Multiplies the scalar value rhs by the complex value *this and stores the result in *this.
Returns: *this.
```constexpr complex& operator/=(const T& rhs); ```
Effects: Divides the scalar value rhs into the complex value *this and stores the result in *this.
Returns: *this.
```template<class X> constexpr complex& operator=(const complex<X>& rhs); ```
Effects: Assigns the value rhs.real() to the real part and the value rhs.imag() to the imaginary part of the complex value *this.
Returns: *this.
```template<class X> constexpr complex& operator+=(const complex<X>& rhs); ```
Effects: Adds the complex value rhs to the complex value *this and stores the sum in *this.
Returns: *this.
```template<class X> constexpr complex& operator-=(const complex<X>& rhs); ```
Effects: Subtracts the complex value rhs from the complex value *this and stores the difference in *this.
Returns: *this.
```template<class X> constexpr complex& operator*=(const complex<X>& rhs); ```
Effects: Multiplies the complex value rhs by the complex value *this and stores the product in *this.
Returns: *this.
```template<class X> constexpr complex& operator/=(const complex<X>& rhs); ```
Effects: Divides the complex value rhs into the complex value *this and stores the quotient in *this.
Returns: *this.