std::tuple_size<std::complex>
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Numerics library
Interpolations
Generic numeric operations
C-style checked integer arithmetic
Mathematical special functions (C++17)
Mathematical constants (C++20)
Basic linear algebra algorithms (C++26)
Data-parallel types (SIMD) (C++26)
Floating-point environment (C++11)
Bit manipulation (C++20)
Saturation arithmetic (C++26)
(C++17)
(C++17)
(C++20)
(C++20)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++26)
std::complex
Hyperbolic functions
Helper types
tuple_size<std::complex>
(C++26)
(C++26)
Defined in header
<complex>
template< class T >
(since C++26)
struct tuple_size<std::complex <T>>
The partial specialization of std::tuple_size for std::complex provides a compile-time way to obtain the number of components of a complex
, which is always 2, using tuple-like syntax. It is provided for structured binding support.
Contents
Inherited from std::integral_constant
Member constants
value
[static]
(public static member constant)
Member functions
operator()
(C++14)
(public member function)
Member types
Type
Definition
value_type
std::size_t
type
std::integral_constant <std::size_t, value>
[edit] Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_tuple_like |
202311L |
(C++26) | Add tuple protocol to std::complex |
[edit] Example
Run this code
#include <complex> static_assert(std::tuple_size_v <std::complex <float>> == 2); static_assert([] { using namespace std::literals; auto [re, im] = -1.5 + 2.5i; return re == -1.5 && im == 2.5; }()); static_assert([] { using namespace std::literals; auto z = std::complex <double>{}; auto& [re, im] = z; re = 1.0; im = 2.0; return z == 1.0 + 2.0i; }()); int main() {}
[edit] See also
Structured binding (C++17)
binds the specified names to sub-objects or tuple elements of the initializer[edit]
(C++26)
(class template specialization) [edit]
(C++26)
(function template) [edit]