9 #include <dune/common/tuplevector.hh> 10 #include <amdis/common/TypeTraits.hpp> 23 template <
class Value,
class F>
24 static void impl(Value&& v, F&& f)
38 template <
class Container,
class F>
39 void forEach(Container&& container, F&& f)
47 template <
class... TT>
50 using indices = std::make_index_sequence<
sizeof...(TT)>;
52 template <std::size_t... I,
class Tuple,
class F>
53 static void impl2(std::index_sequence<I...>, Tuple&& tuple, F&& f)
56 (Recursive::forEach(get<I>(tuple), f),...);
59 template <
class Tuple,
class F>
60 static void impl(Tuple&& tuple, F&& f)
62 impl2(indices{}, tuple, f);
66 template <
class T1,
class T2>
69 template <
class Pair,
class F>
70 static void impl(Pair&& pair, F&& f)
72 Recursive::forEach(pair.first, f);
73 Recursive::forEach(pair.second, f);
77 template <
class... TT>
78 struct ForEach<Dune::TupleVector<TT...>>
80 template <
class Tuple,
class F>
81 static void impl(Tuple&& tuple, F&& f)
83 ForEach<std::tuple<TT...>>::impl(tuple, f);
87 template <
class T, std::
size_t n>
90 template <
class Array,
class F>
91 static void impl(Array&& a, F&& f)
94 Recursive::forEach(ai, f);
101 template <
class Vector,
class F>
102 static void impl(Vector&& v, F&& f)
105 Recursive::forEach(vi, f);
Definition: FieldMatVec.hpp:12
Default implementation of the recursive forEach function.
Definition: RecursiveForEach.hpp:21
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6