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)
Основной шаблон предоставляет конвертирующий шаблон конструктора, в то время как каждая стандартная явная специализация предоставляет два нешаблонных конструктора для двух других стандартных явных специализаций. Нешаблонные конструкторы являются преобразующими конструкторами (т.е. неявными) тогда и только тогда, когда преобразования действительной и мнимой частей не являются сужающими. |
(до C++23) |
Для основного шаблона выражение внутри explicit оценивается в false тогда и только тогда, когда ранг преобразования с плавающей точкой |
(начиная с C++23) |
[править] Параметры
re | — | вещественная часть |
im | — | мнимая часть |
other | — | ругое комплексное число для использования в качестве исходного |
[править] Примечание
Начиная с C++23, конструктор копирования долже тривиальным, чтобы удовлетворять требованию TriviallyCopyable, но реализации обычно делают его тривиальным во всех режимах.
[править] Смотрите также
присваивает содержимое (public функция-элемент) | |
литерал std::complex, представляющий чисто мнимое число (функция) | |
Документация C по CMPLX
|