22 #ifndef LELY_LIBC_UTILITY_HPP_
23 #define LELY_LIBC_UTILITY_HPP_
32 #if __cplusplus >= 201402L
34 using ::std::index_sequence;
35 using ::std::index_sequence_for;
36 using ::std::integer_sequence;
37 using ::std::make_index_sequence;
38 using ::std::make_integer_sequence;
40 #else // __cplusplus < 201402L
43 template <
typename T, T... Ints>
47 static constexpr ::std::size_t
49 return sizeof...(Ints);
55 template <::std::size_t...>
58 template <
class,
class>
61 template <::std::size_t... I1, ::std::size_t... I2>
66 template <::std::
size_t N>
69 typename make_index_tuple<N - N / 2>::type> {};
81 template <class T, T N, class = typename make_index_tuple<N>::type>
84 template <
typename T, T N, ::std::size_t... Ints>
86 static_assert(N >= 0,
"Cannot make integer sequence of negative length");
97 template <::std::size_t... Ints>
104 template <
typename T, T N>
112 template <::std::
size_t N>
119 template <
typename... T>
122 #endif // __cplusplus < 201402L
127 #endif // !LELY_LIBC_UTILITY_HPP_