std::complex::complex
| Основной шаблон ( std::complex<T>) |
||
| (1) | ||
complex( const T& re = T(), const T& im = T() ); |
(до C++14) | |
constexpr complex( const T& re = T(), const T& im = T() ); |
(начиная с C++14) | |
| (2) | ||
complex( const complex& other ); |
(до C++14) | |
constexpr complex( const complex& other ); |
(начиная с C++14) (до C++23) |
|
constexpr complex( const complex& other ) = default; |
(начиная с C++23) | |
| (3) | ||
template< class X > complex( const complex<X>& other ); |
(до C++14) | |
template< class X > constexpr complex( const complex<X>& other ); |
(начиная с C++14) (до C++23) |
|
template< class X > explicit(/* смотрите ниже */) constexpr complex( const complex<X>& other ); |
(начиная с C++23) | |
| Явные специализации для std::complex<float> (до C++23) |
||
| (1) | ||
complex( float re = 0.0f, float im = 0.0f ); |
(до C++11) | |
constexpr complex( float re = 0.0f, float im = 0.0f ); |
(начиная с C++11) | |
constexpr complex( const complex<float>& other ) = default; |
(2) | (начиная с C++20) |
| (3) | ||
explicit complex( const complex<double>& other ); explicit complex( const complex<long double>& other ); |
(до C++11) | |
explicit constexpr complex( const complex<double>& other ); explicit constexpr complex( const complex<long double>& other ); |
(начиная с C++11) | |
| Явные специализации для std::complex<double> (до C++23) |
||
| (1) | ||
complex( double re = 0.0, double im = 0.0 ); |
(до C++11) | |
constexpr complex( double re = 0.0, double im = 0.0 ); |
(начиная с C++11) | |
constexpr complex( const complex<double>& other ) = default; |
(2) | (начиная с C++20) |
| (3) | ||
complex( const complex<float>& other ); explicit complex( const complex<long double>& other ); |
(до C++11) | |
constexpr complex( const complex<float>& other ); explicit constexpr complex( const complex<long double>& other ); |
(начиная с C++11) | |
| Явные специализации для std::complex<long double> (до C++23) |
||
| (1) | ||
complex( long double re = 0.0L, long double im = 0.0L ); |
(до C++11) | |
constexpr complex( long double re = 0.0L, long double im = 0.0L ); |
(начиная с C++11) | |
constexpr complex( const complex<long double>& other ) = default; |
(2) | (начиная с C++20) |
| (3) | ||
complex( const complex<float>& other ); complex( const complex<double>& other ); |
(до C++11) | |
constexpr complex( const complex<float>& other ); constexpr complex( const complex<double>& other ); |
(начиная с C++11) | |
Создает объект std::complex. Явные специализации для (std::complex<float>, std::complex<double> иstd::complex<long double>) имеют объявления конструкторов отдельные от основного шаблона (до C++23)
re и мнимой части im.other. Конструкторы копирования неявно объявляются в явных специализациях.. (до C++20)|
Основной шаблон предоставляет конвертирующий шаблон конструктора, в то время как каждая стандартная явная специализация предоставляет два нешаблонных конструктора для двух других стандартных явных специализаций. Нешаблонные конструкторы являются преобразующими конструкторами (т.е. неявными) тогда и только тогда, когда преобразования действительной и мнимой частей не являются сужающими. |
(до C++23) |
|
Для основного шаблона выражение внутри |
(начиная с C++23) |
Параметры
| re | — | вещественная часть |
| im | — | мнимая часть |
| other | — | ругое комплексное число для использования в качестве исходного |
Примечание
Начиная с C++23, конструктор копирования долже тривиальным, чтобы удовлетворять требованию TriviallyCopyable, но реализации обычно делают его тривиальным во всех режимах.
Смотрите также
| присваивает содержимое (public функция-элемент) | |
| литерал std::complex, представляющий чисто мнимое число (функция) | |
Документация C по CMPLX
| |