std::get(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
Trigonometric functions
Hyperbolic functions
Helper types
(C++26)
(C++26)
Defined in header
<complex>
template< std::size_t I >
friend constexpr T& get( std::complex <T>& x );
(1)
(since C++26)
friend constexpr T& get( std::complex <T>& x );
template< std::size_t I >
friend constexpr const T& get( const std::complex <T>& x );
(2)
(since C++26)
friend constexpr const T& get( const std::complex <T>& x );
template< std::size_t I >
friend constexpr T&& get( std::complex <T>&& x );
(3)
(since C++26)
friend constexpr T&& get( std::complex <T>&& x );
template< std::size_t I >
friend constexpr const T&& get( const std::complex <T>&& x );
(4)
(since C++26)
friend constexpr const T&& get( const std::complex <T>&& x );
Returns the reference to real or imaginary part from a complex
when I == 0 or I == 1, respectively. It is mainly provided for structured binding support.
Contents
[edit] Parameters
x
-
a
complex
[edit] Return value
1-4) A reference to the real or imaginary part from the stored one when I == 0 or I == 1, respectively.
[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([z = std::complex (1.0, 2.0)] { #if __cpp_lib_tuple_like >= 202311L return std::get<0>(z) == 1.0 and std::get<1>(z) == 2.0; #else return z.real() == 1.0 and z.imag() == 2.0; #endif }()); int main() {}
[edit] See also
Structured binding (C++17)
binds the specified names to sub-objects or tuple elements of the initializer[edit]