dune-functions  2.5-dev
Classes | Namespaces | Typedefs | Functions
utility.hh File Reference
#include <utility>
#include <type_traits>
#include <dune/typetree/utility.hh>

Go to the source code of this file.

Classes

struct  Dune::Functions::Imp::ExpandTupleHelper< T, List >
 
struct  Dune::Functions::Imp::ExpandTupleHelper< T, ListType< Args... > >
 
struct  Dune::Functions::Imp::TransformTupleHelper< T, Tuple >
 
struct  Dune::Functions::Imp::TransformTupleHelper< T, typename std::tuple< Args1... > >
 
struct  Dune::Functions::Imp::TransformTupleHelper< T, typename std::tuple< Args1... >, typename std::tuple< Args2... > >
 
struct  Dune::Functions::Imp::IntegerSequenceTupleHelper< IntegerSequence >
 
struct  Dune::Functions::Imp::IntegerSequenceTupleHelper< std::integer_sequence< I, k... > >
 
struct  Dune::Functions::LastType< T >
 Get last entry of type list. More...
 
struct  Dune::Functions::Imp::RotateHelper< T, I >
 
struct  Dune::Functions::Imp::RotateHelper< std::tuple< T... >, std::index_sequence< I... > >
 
struct  Dune::Functions::RotateTuple< T >
 Rotate type list by one, such that last entry is moved to first position. More...
 

Namespaces

 Dune
 
 Dune::Functions
 
 Dune::Functions::Imp
 

Typedefs

template<template< class... > class T, class ArgTuple >
using Dune::Functions::ExpandTuple = typename Imp::ExpandTupleHelper< T, ArgTuple >::Type
 Expand tuple arguments as template arguments. More...
 
template<template< class... > class F, class... Tuples>
using Dune::Functions::TransformTuple = typename Imp::TransformTupleHelper< F, Tuples... >::Type
 Transform tuple types argument using type-functor. More...
 
template<class IntegerSequence >
using Dune::Functions::IntegerSequenceTuple = typename Imp::IntegerSequenceTupleHelper< IntegerSequence >::Type
 Transform integer_sequence<I,k...> to tuple<integral_constant<I,k>...> More...
 

Functions

template<class F , class size_type , size_type firstValue, class... Args>
auto Dune::Functions::forwardAsStaticInteger (std::integer_sequence< size_type, firstValue > values, const size_type &i, F &&f, Args &&... args) -> decltype(f(std::integral_constant< size_type, firstValue >(), std::forward< Args >(args)...))
 
template<class F , class size_type , size_type firstValue, size_type secondValue, size_type... otherValues, class... Args>
auto Dune::Functions::forwardAsStaticInteger (std::integer_sequence< size_type, firstValue, secondValue, otherValues... > values, const size_type i, F &&f, Args &&... args) -> decltype(f(std::integral_constant< size_type, firstValue >(), std::forward< Args >(args)...))
 
template<std::size_t end, class F , class size_type , class... Args>
auto Dune::Functions::forwardAsStaticIndex (const size_type &i, F &&f, Args &&... args) -> decltype(f(Dune::TypeTree::Indices::_0, std::forward< Args >(args)...))
 Transform dynamic index to static index_constant. More...
 
template<class F , class... T, std::size_t... k>
auto Dune::Functions::Imp::transformTupleHelper (F &&f, const std::tuple< T... > &tuple, std::index_sequence< k... >) -> decltype(std::make_tuple(f(std::get< k >(tuple))...))
 
template<class F , class... T1, class... T2, std::size_t... k>
auto Dune::Functions::Imp::transformTupleHelper (F &&f, const std::tuple< T1... > &tuple1, const std::tuple< T2... > &tuple2, std::index_sequence< k... >) -> decltype(std::make_tuple(f(std::get< k >(tuple1), std::get< k >(tuple2))...))
 
template<class F , class... T>
auto Dune::Functions::transformTuple (F &&f, const std::tuple< T... > &tuple) -> decltype(Imp::transformTupleHelper(std::forward< F >(f), tuple, std::index_sequence_for< T... >
 Transform tuple value using a functor. More...
 
template<class F , class... T1, class... T2>
auto Dune::Functions::transformTuple (F &&f, const std::tuple< T1... > &tuple1, const std::tuple< T2... > &tuple2) -> decltype(Imp::transformTupleHelper(std::forward< F >(f), tuple1, tuple2, std::index_sequence_for< T1... >
 Transform tuple value using a binary functor. More...