Namespaces
Variants

std::complex<T>:: complex

From cppreference.net
Основной шаблон ( 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 >
constexpr explicit ( /* см. ниже */ ) 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)
constexpr explicit complex ( const complex < double > & other ) ;
constexpr explicit 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 ) ;
constexpr explicit 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)

1) Создает комплексное число из действительной части re и мнимой части im .
2) Конструктор копирования. Создает объект с копией содержимого other . Конструкторы копирования неявно объявляются в стандартных явных специализациях. (до C++20)
3) Converting constructor . Создает объект из комплексного числа другого типа.

Основной шаблон предоставляет шаблон преобразующего конструктора, в то время как каждая стандартная явная специализация предоставляет два нешаблонных конструктора для двух других стандартных явных специализаций.

Нешаблонные конструкторы являются преобразующими конструкторами (т.е. не explicit) тогда и только тогда, когда преобразования действительной и мнимой частей не являются сужающими.

(до C++23)

Для основного шаблона выражение внутри explicit вычисляется в false тогда и только тогда, когда ранг преобразования с плавающей точкой для T больше или равен рангу преобразования с плавающей точкой для X .

(начиная с C++23)

Параметры

re - действительная часть
im - мнимая часть
other - другое комплексное число для использования в качестве источника

Примечания

Начиная с C++23, конструктор копирования должен быть тривиальным для соответствия требованиям TriviallyCopyable , однако реализации обычно делают его тривиальным во всех режимах.

Смотрите также

присваивает содержимое
(public member function)
литерал std::complex представляющий чисто мнимое число
(function)
C documentation для CMPLX