最終更新日時(UTC):
が更新

履歴 編集

type-alias
<utility>

std::index_sequence_for(C++14)

namespace std {
  template <class... T>
  using index_sequence_for = make_index_sequence<sizeof...(T)>;
}

概要

index_sequence_forは、型のシーケンスを0から始まるsize_t型整数シーケンスに変換する、make_index_sequenceの別名である。

別の言い方をすると、パラメータパックTs...に含まれる各型に対して先頭から順番に0始まりのインデックスを振り、そのインデックスの列(integer_sequence)を返す。

テンプレートパラメータは、以下を意味する:

  • ...T : 任意の型のシーケンス

#include <iostream>
#include <utility>
#include <tuple>

void g(std::size_t a, std::size_t b, std::size_t c)
{
  std::cout << a << ", " << b << ", " << c << std::endl;
}

template <class T, T... Seq>
void f_(std::integer_sequence<T, Seq...>)
{
  g(Seq...);
}

template <class... T>
void f(std::tuple<T...>&&)
{
  // 型のシーケンスを、インデックスのシーケンスに変換
  f_(std::index_sequence_for<T...>());
}

int main()
{
  f(std::make_tuple(1, 'a', "Hello"));
}

出力

0, 1, 2

バージョン

言語

  • C++14

処理系

参照