◐ Shell
clean mode source ↗

std::complex::complex — cppreference.com

Материал из cppreference.com

<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody>

Основной шаблон (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)

1) Создает комплексное число по вещественной части re и мнимой части im.

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

3) Конструктор преобразования. Создает объект из комплексного числа другого типа.

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

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

(до C++23)

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

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

Параметры

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

Примечание

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

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