24#ifndef DUMUX_COMMON_TYPETRAITS_UTILITY_HH
25#define DUMUX_COMMON_TYPETRAITS_UTILITY_HH
39template <
template<
typename... Args>
class Variadic, template<std::size_t> class Indexed, class U>
42template <template<typename... Args> class Variadic, template<std::size_t> class Indexed, std::size_t... IndexSeq>
45 using type = Variadic<Indexed<IndexSeq>...>;
49 template <
class Seq1, std::
size_t offset,
class Seq2>
struct ConcatSeq;
51 template <std::size_t ... Is1, std::size_t offset, std::size_t ... Is2>
52 struct ConcatSeq<std::index_sequence<Is1...>, offset, std::index_sequence<Is2...>>
54 using type = std::index_sequence<Is1..., (offset + Is2)...>;
69template <std::
size_t n, std::
size_t e>
71 typename Detail::ConcatSeq<
decltype(std::make_index_sequence<e>{}), e + 1,
decltype(std::make_index_sequence<(n > e) ? (n - e - 1) : 0>{})>::type;
81template <std::size_t offset, std::size_t ... is>
95template <std::
size_t offset, std::
size_t n>
98 return addOffsetToIndexSequence<offset>(std::make_index_sequence<n>{});
constexpr std::index_sequence<(offset+is)... > addOffsetToIndexSequence(std::index_sequence< is... >)
Definition: utility.hh:82
constexpr auto makeIndexSequenceWithOffset()
Definition: utility.hh:96
typename Detail::ConcatSeq< decltype(std::make_index_sequence< e >{}), e+1, decltype(std::make_index_sequence<(n > e) ?(n - e - 1) :0 >{})>::type makeIncompleteIntegerSequence
Definition: utility.hh:71
Definition: utility.hh:40
Variadic< Indexed< IndexSeq >... > type
Definition: utility.hh:45
Definition: utility.hh:49
std::index_sequence< Is1...,(offset+Is2)... > type
Definition: utility.hh:54