1 #ifndef _INTSEQREMOVE_HPP 2 #define _INTSEQREMOVE_HPP 6 #include <ints/IntListOrder.hpp> 7 #include <ints/IntSeq.hpp> 8 #include <metaprogramming/UniversalReferences.hpp> 20 bool IgnoreIfNotPresent,
27 if constexpr(Rem<=HeadAft)
29 if constexpr(Rem==HeadAft)
30 return IntSeq<Bef...,(TailAft+IncrAft)...>{};
34 static_assert(Rem!=HeadAft
or IgnoreIfNotPresent,
"Cannot ignore the absence");
35 return IntSeq<Bef...,HeadAft+IncrAft,(TailAft+IncrAft)...>{};
39 if constexpr(
sizeof...(TailAft)>0)
40 return _removeFromOrderedIntSeq<Rem,IncrAft,IgnoreIfNotPresent>(IntSeq<Bef...,HeadAft>{},IntSeq<TailAft...>{});
43 return IntSeq<Bef...,HeadAft>{};
50 DECLAUTO _removeFromOrderedIntSeq(
const IntSeq<>&,
const IntSeq<>&)
68 bool IgnoreIfNotPresent=
true>
69 using RemoveFromOrderedIntSeq=
70 decltype(_removeFromOrderedIntSeq<Ins,IncrAft,IgnoreIfNotPresent>(IntSeq<>{},
typename ConstrainIsOrderedIntSeq<Unqualified<IS>>::type{}));
80 bool IgnoreIfPresent=
false>
81 using RemoveFromOrderedUniqueIntSeq=
82 typename ConstrainIsOrderedUniqueIntSeq<
83 decltype(_removeFromOrderedIntSeq<Ins,IncrAft,IgnoreIfPresent>
84 (IntSeq<>{},
typename ConstrainIsOrderedUniqueIntSeq<IS>::type{}))>::type;
decltype(auto) _removeFromOrderedIntSeq(const IntSeq< Bef... > &, const IntSeq< HeadAft, TailAft... > &)
#define DECLAUTO
Short name for decltype(auto)