std::complex<T>::complex
Primary template (std::complex<T>) |
||
(1) | ||
complex( const T& re = T(), const T& im = T() ); |
(until C++14) | |
constexpr complex( const T& re = T(), const T& im = T() ); |
(since C++14) | |
(2) | ||
complex( const complex& other ); |
(until C++14) | |
constexpr complex( const complex& other ); |
(since C++14) (until C++23) |
|
constexpr complex( const complex& other ) = default; |
(since C++23) | |
(3) | ||
template< class X > complex( const complex<X>& other ); |
(until C++14) | |
template< class X > constexpr complex( const complex<X>& other ); |
(since C++14) (until C++23) |
|
template< class X > constexpr explicit(/* see below */) complex( const complex<X>& other ); |
(since C++23) | |
Standard explicit specialization std::complex<float> (until C++23) |
||
(1) | ||
complex( float re = 0.0f, float im = 0.0f ); |
(until C++11) | |
constexpr complex( float re = 0.0f, float im = 0.0f ); |
(since C++11) | |
constexpr complex( const complex<float>& other ) = default; |
(2) | (since C++20) |
(3) | ||
explicit complex( const complex<double>& other ); explicit complex( const complex<long double>& other ); |
(until C++11) | |
constexpr explicit complex( const complex<double>& other ); constexpr explicit complex( const complex<long double>& other ); |
(since C++11) | |
Standard explicit specialization std::complex<double> (until C++23) |
||
(1) | ||
complex( double re = 0.0, double im = 0.0 ); |
(until C++11) | |
constexpr complex( double re = 0.0, double im = 0.0 ); |
(since C++11) | |
constexpr complex( const complex<double>& other ) = default; |
(2) | (since C++20) |
(3) | ||
complex( const complex<float>& other ); explicit complex( const complex<long double>& other ); |
(until C++11) | |
constexpr complex( const complex<float>& other ); constexpr explicit complex( const complex<long double>& other ); |
(since C++11) | |
Standard explicit specialization std::complex<long double> (until C++23) |
||
(1) | ||
complex( long double re = 0.0L, long double im = 0.0L ); |
(until C++11) | |
constexpr complex( long double re = 0.0L, long double im = 0.0L ); |
(since C++11) | |
constexpr complex( const complex<long double>& other ) = default; |
(2) | (since C++20) |
(3) | ||
complex( const complex<float>& other ); complex( const complex<double>& other ); |
(until C++11) | |
constexpr complex( const complex<float>& other ); constexpr complex( const complex<double>& other ); |
(since C++11) | |
Constructs the std::complex object. The standard explicit specializations (std::complex<float>, std::complex<double> and std::complex<long double>) have different constructor declarations from the main template.(until C++23)
The main template provides a converting constructor template, while each standard explicit specialization provides two non-template constructors for the two other standard explicit specializations. The non-template constructors are converting constructors (i.e. non-explicit) if and only if the conversions of the real and imaginary parts are not narrowing. |
(until C++23) |
For the main template, the expression inside explicit evaluates to false if and only if the floating-point conversion rank of |
(since C++23) |
[edit] Parameters
re | - | the real part |
im | - | the imaginary part |
other | - | another complex number to use as source |
[edit] Notes
Since C++23, the copy constructor is required to be trivial in order to satisfy the TriviallyCopyable requirement, but implementations generally make it trivial in all modes.
[edit] See also
assigns the contents (public member function) | |
a std::complex literal representing purely imaginary number (function) | |
C documentation for CMPLX
|