|
| 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.