最終更新日時:
が更新

履歴 編集

class template
<utility>

std::integer_sequence(C++14)

namespace std {
  template <class T, T... I>
  struct integer_sequence {
    using value_type = T;
    static constexpr size_t size() noexcept { return sizeof...(I); }
  };
}

概要

integer_sequenceは、任意の整数型のシーケンスをコンパイル時に表現するクラスである。

このクラスは、tupleオブジェクトを展開して、引数パックとして他の関数に転送することを主目的として作られた。

#include <iostream>
#include <utility>

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

template <class T, T... Seq>
void f(std::integer_sequence<T, Seq...>)
{
  // 定数のシーケンス{0, 1, 2}を取り出して、関数g()の引数として転送
  g(Seq...);
}

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

出力

0, 1, 2

バージョン

言語

  • C++14

処理系

参照