7 #include <dune/common/tuplevector.hh> 8 #include <amdis/common/Apply.hpp> 19 static auto impl(F&& f, T
const& t)
34 template <
class F,
class T>
35 auto apply(F&& f, T
const& t)
43 template <
class T, std::
size_t n>
47 static auto impl(F&& f, std::array<T,n>
const& a)
49 return Ranges::applyIndices<n>([&](
auto... ii) {
50 return std::array{Recursive::apply(f,a[ii])...}; });
54 template <
class... TT>
58 static auto impl(F&& f, std::tuple<TT...>
const& t)
60 return Ranges::apply([&](
auto const&... ti) {
61 return std::tuple{Recursive::apply(f,ti)...}; }, t);
65 template <
class T1,
class T2>
69 static auto impl(F&& f, std::pair<T1,T2>
const& t)
71 return std::pair{Recursive::apply(f,t.first),
72 Recursive::apply(f,t.second)};
76 template <
class... TT>
77 struct Apply<Dune::TupleVector<TT...>>
80 static auto impl(F&& f, Dune::TupleVector<TT...>
const& t)
82 return Ranges::apply([&](
auto const&... ti) {
83 return Dune::makeTupleVector(Recursive::apply(f,ti)...); }, t);
91 static auto impl(F&& f, std::vector<T>
const& v)
93 using U = TYPEOF(Recursive::apply(f,std::declval<T>()));
95 out.reserve(v.size());
96 for (std::size_t i = 0; i < v.size(); ++i)
97 out.emplace_back(Recursive::apply(f,v[i]));
Definition: FieldMatVec.hpp:12
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Default implementation of the recursive map function.
Definition: RecursiveApply.hpp:16