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) |
Parameters
re | - | the real part |
im | - | the imaginary part |
other | - | another complex number to use as source |
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.
See also
assigns the contents (public member function) | |
a std::complex literal representing purely imaginary number (function) |