namespace std {
template <class T, T... I>
struct integer_sequence {
using value_type = T;
static constexpr std::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
処理系
- Clang: 3.4 ✅
- GCC: 4.9.0 ✅
- ICC: ??
- Visual C++: 2015 ✅