最終更新日時:
が更新

履歴 編集

type-alias
<utility>

std::index_sequence(C++14)

namespace std {
  template <size_t... I>
  using index_sequence = integer_sequence<size_t, I...>;
}

概要

index_sequenceは、size_t型のシーケンスをコンパイル時に表現する、integer_sequenceクラスの別名である。

#include <iostream>
#include <utility>

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++のバグに対する回避策
                                         // 本来はindex_sequenceで受け取れるはず
{
  // 定数のシーケンス{0, 1, 2}を取り出して、関数g()の引数として転送
  g(Seq...);
}

int main()
{
  f(std::index_sequence<0, 1, 2>());
}

出力

0, 1, 2

バージョン

言語

  • C++14

処理系

備考

  • GCC 4.9.2で、std::index_sequenceを関数のパラメータとして受け取るとコンパイルエラーになる問題がある(Bug 65790)

参照