Dune Core Modules (unstable)
Utility classes which can be used with std::tuple. More...
Files | |
file | tupleutility.hh |
Contains utility classes which can be used with std::tuple. | |
Classes | |
struct | Dune::NullPointerInitialiser< T > |
A helper template that initializes a std::tuple consisting of pointers to nullptr. More... | |
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... | |
class | Dune::TransformTupleFunctor< TE, Args > |
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::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::PushFrontTuple< Tuple, T > |
Helper template to prepend a type to a std::tuple. More... | |
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... | |
Typedefs | |
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. | |
Functions | |
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. More... | |
template<class Tuple , class Functor > | |
auto | Dune::genericTransformTuple (Tuple &&t, Functor &&f) -> decltype(genericTransformTupleBackend(t, f)) |
template<template< class > class TypeEvaluator, class Tuple , class... Args> | |
auto | Dune::transformTuple (Tuple &&orig, Args &&... args) -> decltype(genericTransformTuple(orig, makeTransformTupleFunctor< TypeEvaluator >(args...))) |
Detailed Description
Utility classes which can be used with std::tuple.
Function Documentation
◆ applyPartial()
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.
◆ genericTransformTuple()
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:
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.
Referenced by Dune::transformTuple().
◆ transformTuple()
auto Dune::transformTuple | ( | Tuple && | orig, |
Args &&... | args | ||
) | -> decltype(genericTransformTuple(orig, makeTransformTupleFunctor<TypeEvaluator>(args...))) |
This function provides functionality similar to genericTransformTuple(), although less general and closer in spirit to ForEachType.
- Template Parameters
-
TypeEvaluator Used as the TE
template argument to TransformTupleFunctor internally.Tuple Type of the std::tuple to transform. Args Types of extra argument to call the transformation function with.
- Parameters
-
orig Tuple value to be transformed. args Extra arguments values to provide to the transformation function.
The TypeEvaluator
class template should be suitable as the TE
template argument for TransformTupleFunctor. It has the following form (an extension of the TypeEvaluator
template argument of ForEachType):
- See also
- genericTransforTuple(), ForEachType, AddRefTypeEvaluator, and AddPtrTypeEvaluator.
References Dune::genericTransformTuple().