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) |