12#ifndef DUMUX_COMMON_TYPETRAITS_UTILITY_HH
13#define DUMUX_COMMON_TYPETRAITS_UTILITY_HH
27template <
template<
typename... Args>
class Variadic, template<std::size_t> class Indexed, class U>
30template <template<typename... Args> class Variadic, template<std::size_t> class Indexed, std::size_t... IndexSeq>
33 using type = Variadic<Indexed<IndexSeq>...>;
37 template <
class Seq1, std::
size_t offset,
class Seq2>
struct ConcatSeq;
39 template <std::size_t ... Is1, std::size_t offset, std::size_t ... Is2>
40 struct ConcatSeq<std::index_sequence<Is1...>, offset, std::index_sequence<Is2...>>
42 using type = std::index_sequence<Is1..., (offset + Is2)...>;
57template <std::
size_t n, std::
size_t e>
59 typename Detail::ConcatSeq<
decltype(std::make_index_sequence<e>{}), e + 1,
decltype(std::make_index_sequence<(n > e) ? (n - e - 1) : 0>{})>::type;
69template <std::size_t offset, std::size_t ... is>
83template <std::
size_t offset, std::
size_t n>
86 return addOffsetToIndexSequence<offset>(std::make_index_sequence<n>{});
constexpr std::index_sequence<(offset+is)... > addOffsetToIndexSequence(std::index_sequence< is... >)
Definition: utility.hh:70
constexpr auto makeIndexSequenceWithOffset()
Definition: utility.hh:84
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:59
std::index_sequence< Is1...,(offset+Is2)... > type
Definition: utility.hh:42
Definition: utility.hh:37
Variadic< Indexed< IndexSeq >... > type
Definition: utility.hh:33
Definition: utility.hh:28