sequence 722 B

123456789101112131415161718192021222324252627
  1. #ifndef __GBLIBCPP_BITS_SEQUENCE__
  2. #define __GBLIBCPP_BITS_SEQUENCE__
  3. #include <cstddef>
  4. namespace std {
  5. template <typename T, T... Ints>
  6. struct integer_sequence {
  7. static constexpr std::size_t size() noexcept { return sizeof...(Ints); }
  8. };
  9. template <std::size_t... Indicies>
  10. using index_sequence = integer_sequence<std::size_t, Indicies...>;
  11. template <std::size_t N, std::size_t... Indicies>
  12. struct make_index_sequence : public make_index_sequence<N-1, N-1, Indicies...> {};
  13. template <std::size_t... Indicies>
  14. struct make_index_sequence<0, Indicies...> : public index_sequence<Indicies...> {};
  15. template <typename... Ts>
  16. using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
  17. } // namespace std
  18. #endif