Skip to content

Latest commit

 

History

History
125 lines (94 loc) · 2.43 KB

File metadata and controls

125 lines (94 loc) · 2.43 KB

get

  • utility[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp26[meta cpp]
namespace std {
  template <std::size_t I, class T, T... Values>
  constexpr T get(integer_sequence<T, Values...>) noexcept; // (1) C++26
}
  • integer_sequence[link ../integer_sequence.md]

概要

integer_sequenceから、I番目の整数値を取得する。

適格要件

  • I < sizeof...(Values)であること

戻り値

Values...I番目の値

例外

投げない

基本的な使い方

#include <iostream>
#include <utility>

int main()
{
  using Seq = std::integer_sequence<int, 10, 20, 30>;

  std::cout << std::get<0>(Seq{}) << std::endl;
  std::cout << std::get<1>(Seq{}) << std::endl;
  std::cout << std::get<2>(Seq{}) << std::endl;
}
  • std::get[color ff0000]

出力

10
20
30

構造化束縛で使用する

構造化束縛は内部的にget<I>を呼び出して各要素を取り出す。

#include <iostream>
#include <utility>

template <std::size_t Count>
void run() {
  // 各Indexはget<I>(make_index_sequence<Count>{})から取り出される
  constexpr auto [...Index] = std::make_index_sequence<Count>{};
  ((std::cout << Index << ' '), ...);
  std::cout << std::endl;
}

int main()
{
  run<3>();
}
  • std::make_index_sequence[link ../make_index_sequence.md]

出力

0 1 2 

template for文で使用する

template forはループの各反復でget<I>を呼び出す。

#include <iostream>
#include <utility>

int main()
{
  // 各反復で get<0>, get<1>, get<2> が呼び出される
  template for (auto I : std::make_index_sequence<3>{}) {
    std::cout << I << ' ';
  }
  std::cout << std::endl;
}
  • std::make_index_sequence[link ../make_index_sequence.md]

出力

0 1 2 

バージョン

言語

  • C++26

処理系

  • Clang: 23 [mark verified]
  • GCC: 16.1 [mark verified]
  • Visual C++: 2026 Update 2 [mark noimpl]

関連項目

参照