[complex.numbers.general] (original) (raw)
26 Numerics library [numerics]
26.4.1 General [complex.numbers.general]
The header defines a class template, and numerous functions for representing and manipulating complex numbers.
The effect of instantiating the templatecomplexfor any type other than float, double, or long double is unspecified.
The specializationscomplex<float>,complex<double>, andcomplex<long double> are literal types.
If the result of a function is not mathematically defined or not in the range of representable values for its type, the behavior is undefined.
If z is an lvalue of type cv complex<T> then:
- the expression reinterpret_cast<cv T(&)[2]>(z) is well-formed,
- reinterpret_cast<cv T(&)[2]>(z)[0] designates the real part of z, and
- reinterpret_cast<cv T(&)[2]>(z)[1] designates the imaginary part of z.
Moreover, if a is an expression of type cv complex<T>* and the expression a[i] is well-defined for an integer expression i, then:
- reinterpret_cast<cv T*>(a)[2*i] designates the real part of a[i], and
- reinterpret_cast<cv T*>(a)[2*i + 1] designates the imaginary part of a[i].