10 #include <type_traits>
17 template<
typename TDstType,
typename TIntegerSequence>
20 template<
typename TDstType,
typename T, T... Tvals>
23 using type = std::integer_sequence<TDstType, static_cast<TDstType>(Tvals)...>;
27 template<
typename TDstType,
typename TIntegerSequence>
32 template<
bool TisSizeNegative,
bool TbIsBegin,
typename T, T Tbegin,
typename TIntCon,
typename TIntSeq>
35 static_assert(!TisSizeNegative,
"MakeIntegerSequence<T, N> requires N to be non-negative.");
38 template<
typename T, T Tbegin, T... Tvals>
44 std::integral_constant<T, Tbegin>,
45 std::integer_sequence<T, Tvals...>>
47 using type = std::integer_sequence<T, Tvals...>;
50 template<
typename T, T Tbegin, T TIdx, T... Tvals>
56 std::integral_constant<T, TIdx>,
57 std::integer_sequence<T, Tvals...>>
64 std::integral_constant<T, TIdx - 1>,
65 std::integer_sequence<T, TIdx - 1, Tvals...>>::
type;
69 template<
typename T, T Tbegin, T Tsize>
75 std::integral_constant<T, Tbegin + Tsize>,
76 std::integer_sequence<T>>::type;
79 template<
typename T, T... Tvals>
86 template<
typename TIntegerSequence>
90 template<
typename T, T... Tvals>
97 template<
typename T, T Tmin, T Tmax, T... Tvals>
101 template<
typename T, T Tmin, T Tmax>
104 static constexpr
bool value =
true;
108 template<
typename T, T Tmin, T Tmax, T I, T... Tvals>
111 static constexpr
bool value
116 template<
typename TIntegerSequence,
typename T, T Tmin, T Tmax>
120 template<
typename T, T... Tvals, T Tmin, T Tmax>