最終更新日時: 2024年08月02日 15時00分52秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<complex>

# std::get(C++26)

    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 ❌

## 関連項目

- `get - std::tuple`

## 参照

- P2819R2 Add tuple protocol to complex
  - C++26から`std::complex`にタプルインタフェースがサポートされた