10 #include <ints/IntListOperations.hpp> 11 #include <ints/IntListOrder.hpp> 12 #include <ints/IntListGetEl.hpp> 13 #include <metaprogramming/TypeTraits.hpp> 14 #include <metaprogramming/UniversalReferences.hpp> 147 template <
typename Is,
160 struct _AppendFirstN;
168 struct _AppendFirstN<
true,N,
IntSeq<HeadR,TailR...>>
171 using type=
typename IntSeq<Ints...,HeadR>::
template AppendFirstN<N-1,
IntSeq<TailR...>>;
180 struct _AppendFirstN<
false,N,
IntSeq<R...>>
191 using AppendFirstN=
typename _AppendFirstN<(N>0),N,ISeq>::type;
197 template <
int...Ints>
207 template <
typename T>
215 template <
int...Ints>
216 constexpr
bool isOrderedIntSeq<IntSeq<Ints...>> =
217 IntSeq<Ints...>::isOrdered;
220 template <
typename T,
221 typename=ConstrainIsIntSeq<T>>
222 struct ConstrainIsOrderedIntSeq
227 static_assert(isOrderedIntSeq<T>,
"IntSeq is not ordered");
231 template <
typename T,
232 typename=ConstrainIsIntSeq<T>>
233 struct ConstrainIsOrderedUniqueIntSeq
237 static_assert(Unqualified<T>::isOrderedUnique,
"IntSeq is not ordered and unique");
constexpr bool isOrderedIntSeq
static constexpr std::array< int, size > array
Returns a constexpr array containing the Ints.
static constexpr int element()
Get the I element of the sequence.
#define DECLAUTO
Short name for decltype(auto)
#define DEFINE_BASE_TYPE(TYPE,...)