1 #ifndef DUNE_COMMON_STD_UTILITY_HH 2 #define DUNE_COMMON_STD_UTILITY_HH 18 #if __cpp_lib_integer_sequence >= 201304 20 using std::integer_sequence;
25 #else // __cpp_lib_integer_sequence >= 201304 35 template<
class T, T... Ints >
38 static_assert( std::is_integral< T >::value,
"Template parameter T is required to be an integral type" );
46 static constexpr std::size_t
size () {
return sizeof...( Ints ); }
54 template< std::size_t... Ints >
61 template<
typename T, T i, T n, T... indices>
62 struct _make_integer_sequence
63 :
public _make_integer_sequence<T,i+1,n,indices...,i>
66 template<
typename T, T n, T... indices>
67 struct _make_integer_sequence<T,n,n,indices...>
76 template<
typename T, T n>
79 template<std::
size_t n>
82 #endif // __cpp_lib_integer_sequence >= 201304 98 template<
typename... T>
107 #endif // #ifndef DUNE_COMMON_STD_UTILITY_HH make_index_sequence< typename Dune::SizeOf< T... >{}> index_sequence_for
Create index_sequence from 0 to sizeof...(T)-1.
Definition: utility.hh:99
T value_type
value type
Definition: utility.hh:38
Dune namespace.
Definition: alignment.hh:10
Traits for type conversions and type information.
static constexpr std::size_t size()
return number of elements in sequence
Definition: utility.hh:46
typename impl::_make_integer_sequence< T, 0, n >::type make_integer_sequence
Definition: utility.hh:77
an implementation of std::integer_sequence as introduced in C++14
Definition: utility.hh:36
Compute size of variadic type list.
Definition: typetraits.hh:564
integer_sequence< std::size_t, Ints... > index_sequence
std::index_sequence as introduced in C++14
Definition: utility.hh:55
make_integer_sequence< std::size_t, n > make_index_sequence
Definition: utility.hh:80