5#ifndef MOLYBDEN_INTEGER_SEQUENCE_HPP
6#define MOLYBDEN_INTEGER_SEQUENCE_HPP
23template <
typename T, T... Ints>
24struct integer_sequence {
27 static constexpr std::size_t size() {
return sizeof...(Ints); }
30template <std::size_t... Ints>
31using index_sequence = integer_sequence<std::size_t, Ints...>;
33template <
typename T, std::size_t N, T... Is>
34struct make_integer_sequence : make_integer_sequence<T, N - 1, N - 1, Is...> {};
36template <
typename T, T... Is>
37struct make_integer_sequence<T, 0, Is...> : integer_sequence<T, Is...> {};
39template <std::
size_t N>
40using make_index_sequence = make_integer_sequence<std::size_t, N>;
42template <
typename... T>
43using index_sequence_for = make_index_sequence<
sizeof...(T)>;