|
struct | Dune::TupleAccessTraits< T > |
|
struct | Dune::TupleAccessTraits< T * > |
|
struct | Dune::TupleAccessTraits< T & > |
|
struct | Dune::NullPointerInitialiser< T > |
| A helper template that initializes a std::tuple consisting of pointers to nullptr. More...
|
|
struct | Dune::NullPointerInitialiser< std::tuple< Args... > > |
|
struct | Dune::ForEachType< TE, T > |
| Helper template to clone the type definition of a std::tuple with the storage types replaced by a user-defined rule. More...
|
|
struct | Dune::ForEachType< TE, std::tuple< Args... > > |
|
class | Dune::TransformTupleFunctor< TE, Args > |
|
struct | Dune::TransformTupleFunctor< TE, Args >::TypeEvaluator< T > |
|
struct | Dune::AddRefTypeEvaluator< T > |
| TypeEvaluator to turn a type T into a reference to T More...
|
|
struct | Dune::AddPtrTypeEvaluator< T > |
| TypeEvaluator to turn a type T into a pointer to T More...
|
|
struct | Dune::AddPtrTypeEvaluator< T & > |
|
struct | Dune::AtType< N, Tuple > |
| Type for reverse element access. More...
|
|
struct | Dune::At< N > |
| Reverse element access. More...
|
|
struct | Dune::PointerPairDeletor< Tuple > |
| Deletes all objects pointed to in a std::tuple of pointers. More...
|
|
class | Dune::FirstPredicateIndex< Tuple, Predicate, start, size > |
| Finding the index of a certain type in a std::tuple. More...
|
|
struct | Dune::IsType< T > |
| Generator for predicates accepting one particular type. More...
|
|
struct | Dune::IsType< T >::Predicate< U > |
| The actual predicate. More...
|
|
struct | Dune::FirstTypeIndex< Tuple, T, start > |
| Find the first occurrence of a type in a std::tuple. More...
|
|
struct | Dune::PushBackTuple< Tuple, T > |
| Helper template to append a type to a std::tuple. More...
|
|
struct | Dune::PushBackTuple< typename std::tuple< Args... >, T > |
|
struct | Dune::PushFrontTuple< Tuple, T > |
| Helper template to prepend a type to a std::tuple. More...
|
|
struct | Dune::PushFrontTuple< typename std::tuple< Args... >, T > |
|
struct | Dune::ReduceTuple< F, Tuple, Seed, N > |
| Apply reduce with meta binary function to template. More...
|
|
struct | Dune::ReduceTuple< F, Tuple, Seed, 0 > |
| Apply reduce with meta binary function to template. More...
|
|
struct | Dune::JoinTuples< Head, Tail > |
| Join two std::tuple's. More...
|
|
struct | Dune::FlattenTuple< Tuple > |
| Flatten a std::tuple of std::tuple's. More...
|
|
|
typedef std::add_const< T >::type & | Dune::TupleAccessTraits< T >::ConstType |
|
typedef T & | Dune::TupleAccessTraits< T >::NonConstType |
|
typedef const std::remove_const< T >::type & | Dune::TupleAccessTraits< T >::ParameterType |
|
typedef std::add_const< T >::type * | Dune::TupleAccessTraits< T * >::ConstType |
|
typedef T * | Dune::TupleAccessTraits< T * >::NonConstType |
|
typedef T * | Dune::TupleAccessTraits< T * >::ParameterType |
|
typedef T & | Dune::TupleAccessTraits< T & >::ConstType |
|
typedef T & | Dune::TupleAccessTraits< T & >::NonConstType |
|
typedef T & | Dune::TupleAccessTraits< T & >::ParameterType |
|
typedef std::tuple< Args... > | Dune::NullPointerInitialiser< std::tuple< Args... > >::ResultType |
|
typedef std::tuple< typename TE< Args >::Type... > | Dune::ForEachType< TE, std::tuple< Args... > >::Type |
|
typedef T & | Dune::AddRefTypeEvaluator< T >::Type |
|
typedef std::remove_reference< T >::type * | Dune::AddPtrTypeEvaluator< T >::Type |
|
typedef std::remove_reference< T >::type * | Dune::AddPtrTypeEvaluator< T & >::Type |
|
typedef std::tuple_element< std::tuple_size< Tuple >::value-N-1, Tuple >::type | Dune::AtType< N, Tuple >::Type |
|
typedef std::tuple< Args..., T > | Dune::PushBackTuple< typename std::tuple< Args... >, T >::type |
|
typedef std::tuple< T, Args... > | Dune::PushFrontTuple< typename std::tuple< Args... >, T >::type |
|
typedef ReduceTuple< F, Tuple, Seed, N-1 >::type | Dune::ReduceTuple< F, Tuple, Seed, N >::Accumulated |
|
typedef std::tuple_element< N-1, Tuple >::type | Dune::ReduceTuple< F, Tuple, Seed, N >::Value |
|
typedef F< Accumulated, Value >::type | Dune::ReduceTuple< F, Tuple, Seed, N >::type |
| Result of the reduce operation.
|
|
typedef Seed | Dune::ReduceTuple< F, Tuple, Seed, 0 >::type |
| Result of the reduce operation.
|
|
typedef ReduceTuple< PushBackTuple, Tail, Head >::type | Dune::JoinTuples< Head, Tail >::type |
| Result of the join operation.
|
|
typedef ReduceTuple< JoinTuples, Tuple >::type | Dune::FlattenTuple< Tuple >::type |
| Result of the flatten operation.
|
|
|
template<class F , class ArgTuple , class I , I... i> |
decltype(auto) | Dune::applyPartial (F &&f, ArgTuple &&args, std::integer_sequence< I, i... >) |
| Apply function with arguments from a given tuple.
|
|
static ResultType | Dune::NullPointerInitialiser< std::tuple< Args... > >::apply () |
|
template<class Tuple , class Functor > |
auto | Dune::genericTransformTuple (Tuple &&t, Functor &&f) -> decltype(genericTransformTupleBackend(t, f)) |
|
| Dune::TransformTupleFunctor< TE, Args >::TransformTupleFunctor (Args &&... args) |
|
template<class T > |
auto | Dune::TransformTupleFunctor< TE, Args >::operator() (T &&t) -> decltype(this->apply(t, std::index_sequence_for< Args... >{})) const |
|
template<template< class > class TE, class... Args> |
TransformTupleFunctor< TE, Args... > | Dune::makeTransformTupleFunctor (Args &&... args) |
|
template<template< class > class TypeEvaluator, class Tuple , class... Args> |
auto | Dune::transformTuple (Tuple &&orig, Args &&... args) -> decltype(genericTransformTuple(orig, makeTransformTupleFunctor< TypeEvaluator >(args...))) |
|
static Type | Dune::AddRefTypeEvaluator< T >::apply (T &t) |
|
static Type | Dune::AddPtrTypeEvaluator< T >::apply (T &t) |
|
static Type | Dune::AddPtrTypeEvaluator< T & >::apply (T &t) |
|
template<typename Tuple > |
static TupleAccessTraits< typenameAtType< N, Tuple >::Type >::NonConstType | Dune::At< N >::get (Tuple &t) |
|
template<typename Tuple > |
static TupleAccessTraits< typenameAtType< N, Tuple >::Type >::ConstType | Dune::At< N >::get (const Tuple &t) |
|
template<typename... Ts> |
static void | Dune::PointerPairDeletor< Tuple >::apply (std::tuple< Ts... > &t) |
|
Utility classes which can be used with std::tuple.
template<class F , class ArgTuple , class I , I... i>
decltype(auto) Dune::applyPartial |
( |
F && |
f, |
|
|
ArgTuple && |
args, |
|
|
std::integer_sequence< I, i... > |
|
|
) |
| |
Apply function with arguments from a given tuple.
- Parameters
-
f | A callable object |
args | Tuple containing the arguments |
indices | Indices to arguments in tuple as std::integer_sequence |
This will call the function with arguments generated by unpacking those entries of the tuple that show up given integer_sequence.
template<class Tuple , class Functor >
auto Dune::genericTransformTuple |
( |
Tuple && |
t, |
|
|
Functor && |
f |
|
) |
| -> decltype(genericTransformTupleBackend(t, f))
|
This function does for the value of a std::tuple what ForEachType does for the type of a std::tuple: it transforms the value using a user-provided policy functor.
- Parameters
-
t | The std::tuple value to transform. |
f | The functor to use to transform the values. |
The functor should have the following form:
struct Functor
{
template<class>
struct TypeEvaluator
{
typedef user-defined Type;
};
template<class T>
typename TypeEvaluator<T>::Type operator()(T& val);
template<class T>
typename TypeEvaluator<T>::Type operator()(T& val) const;
template<class T>
typename TypeEvaluator<T>::Type operator()(const T& val);
template<class T>
typename TypeEvaluator<T>::Type operator()(const T& val) const;
};
The member class template TypeEvaluator
should be a class template suitable as the TypeEvaluator
template parameter for ForEachType. The function call operator operator()
is used to transform the value; only the signatures of operator()
which are actually used must be present.