std::real(std::complex)(3)

NAME
std::real(std::complex) - std::real(std::complex)

Synopsis
   Defined in header <complex>
   template< class T >
   T real( const std::complex<T>& z (until C++14)
   );
   template< class T >
   constexpr T real( const (since C++14)
   std::complex<T>& z );
   Additional overloads (since C++11)
   Defined in header <complex>
   float real( float f );
   double real( double f ); (until C++14)
   long double real( long double f );
   constexpr float real( float
   f ); (1)
   constexpr double real( double (since C++14)
   f ); (until C++23)
                        (A)
   constexpr long double real( long
   double f );
   template< class FloatingPoint >
   constexpr FloatingPoint real( (since C++23)
   FloatingPoint f );
   template< class Integer > (until C++14)
   double real( Integer i );
   template< class Integer > (B)
   constexpr double real( Integer i (since C++14)
   );
   1) Returns the real part of the complex number z, i.e. z.real().
   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 real part of z.
   A) f.
   B) static_cast<double>(i).

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::real(num) has the same effect as
       std::real(std::complex<T>(num)).
     * Otherwise, if num has an integer type, then std::real(num) has the same effect
       as std::real(std::complex<double>(num)).

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