std::complex<T>::complex
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   主模板(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) 转换构造函数。从另一个复数类型构造对象。
 
| 
 主模板提供了一个转换构造函数模板,而每个标准显式特化都为其他两个标准显式特化提供了对应的两个非模板构造函数。 这些非模板构造函数当且仅当实虚部转换不会窄化时才是转换构造函数(即非 explicit)。  | 
(C++23 前) | 
| 
 explicit 中的表达式当且仅当   | 
(C++23 起) | 
参数
| re | - | 实部 | 
| im | - | 虚部 | 
| other | - | 用作源的另一复数 | 
注解
从 C++23 起,为满足可平凡复制 (TriviallyCopyable) 的要求,复制构造函数必须是平凡的,但是实现通常会使其在所有 C++ 标准模式下平凡。
参阅
|   赋值内容  (公开成员函数)  | |
|   表示纯虚数的 std::complex 字面量  (函数)  |