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) |
|
|
C documentation
for
CMPLX
|
|