std::imag(std::complex)(3)

NAME
std::imag(std::complex) - std::imag(std::complex)

Synopsis
   Defined in header <complex>
   template< class T >
   T imag( const std::complex<T>& z (until C++14)
   );
   template< class T >
   constexpr T imag( const (since C++14)
   std::complex<T>& z );
   Additional overloads (since C++11)
   Defined in header <complex>
   float imag( float f );
   double imag( double f ); (until C++14)
   long double imag( long double f );
   constexpr float imag( float
   f ); (1)
   constexpr double imag( double (since C++14)
   f ); (until C++23)
                        (A)
   constexpr long double imag( long
   double f );
   template< class FloatingPoint >
   FloatingPoint imag( FloatingPoint (since C++23)
   f );
   template< class Integer > (until C++14)
   double imag( Integer i );
   template< class Integer > (B)
   constexpr double imag( Integer i (since C++14)
   );
   1) Returns the imaginary part of the complex number z, i.e. z.imag().
   A,B) Additional overloads are provided for all integer and
   floating-point types, which are treated as complex numbers with zero (since C++11)
   imaginary part.

Parameters
   z - complex value
   f - floating-point value
   i - integer value

Return value
   1) The imaginary part of z.
   A) decltype(f){} (zero).
   B) 0.0.

Notes
   The additional overloads are not required to be provided exactly as (A,B). They only
   need to be sufficient to ensure that for their argument num:
     * If num has a
       standard
       (until C++23) floating-point type T, then std::imag(num) has the same effect as
       std::imag(std::complex<T>(num)).
     * Otherwise, if num has an integer type, then std::imag(num) has the same effect
       as std::imag(std::complex<double>(num)).

See also
   imag accesses the imaginary part of the complex number
        (public member function)
   real returns the real part
        (function template)
   C documentation for
   cimag