namespace std {
template <std::size_t I, class T>
constexpr T& get(complex<T>& z) noexcept; // (1) C++26
template <std::size_t I, class T>
constexpr T&& get(complex<T>&& z) noexcept; // (2) C++26
template <std::size_t I, class T>
constexpr const T& get(const complex<T>& z) noexcept; // (3) C++26
template <std::size_t I, class T>
constexpr const T&& get(const complex<T>&& z) noexcept; // (4) C++26
}
概要
タプルと見なせる型から指定した位置の要素を取得する。
<complex>
ヘッダでは、std::complex
クラスに関するオーバーロードを定義する。
適格要件
I < 2
であること
戻り値
I == 0
の場合は実部 (real)、そうでない場合は虚部 (imag) を返す。
例外
投げない
例
#include <print>
#include <complex>
int main()
{
std::complex<float> c{1.0f, 2.0f};
float real = std::get<0>(c);
float imag = std::get<1>(c);
std::println("real:{} imag:{}", real, imag);
}
出力
real:1 imag:2
バージョン
言語
- C++26
処理系
- Clang: 19.0 ❌
- GCC: 14 ❌
- Visual C++: 2022 Update 10 ❌
関連項目
参照
- P2819R2 Add tuple protocol to complex
- C++26から
std::complex
にタプルインタフェースがサポートされた
- C++26から