6#include <amdis/common/Index.hpp>
7#include <amdis/common/ConceptsBase.hpp>
17 template <
class F,
int... I>
18 auto require(F&& f, std::integer_sequence<int,I...>) ->
decltype( order(f, I...) );
24 auto require(F&& f, std::vector<int> o = {}) ->
decltype( order(f, o) );
28 template <
class F,
int N>
34 template <
class F,
int N>
35 using HasFunctorOrder_t = bool_t<HasFunctorOrder<F,N>>;
45 template <
class T, T value>
48 template <
class... Ts>
49 constexpr T operator()(Ts
const&... )
const
58 template <
class T, T value,
class... Int>
64 template <
class T, T value, std::
size_t J>
65 constexpr auto partial(StaticConstant<T,value>
const&, index_t<J>)
76 constexpr T
const& operator()(T
const& x)
const
81 friend constexpr int order(
Id const&,
int d)
86 friend auto partial(
Id const&, index_t<0>)
102 template <
class... Ts>
103 constexpr T
const& operator()(Ts
const&... )
const
112 template <
class T,
class... Int>
118 template <
class T, std::
size_t J>
119 constexpr auto partial(Constant<T>
const&, index_t<J>)
134 template <
class... Ts>
135 constexpr T
const& operator()(Ts
const&... )
const
144 template <
class T,
class... Int>
150 template <
class T, std::
size_t J>
151 constexpr auto partial(Reference<T>
const&, index_t<J>)
159 template <
class T0,
class... Ts>
160 inline constexpr decltype(
auto) get_element(index_t<0>, T0&& t0, Ts&&... )
165 template <std::size_t J,
class T0,
class... Ts>
166 inline constexpr decltype(
auto) get_element(index_t<J>, T0&& , Ts&&... ts)
168 static_assert(J <=
sizeof...(Ts),
"");
169 return get_element(index_t<J-1>{}, FWD(ts)...);
172 template <std::
size_t I>
175 template <
class... Ts>
176 constexpr auto&& operator()(Ts&&... args)
const
178 return get_element(index_t<I>{}, FWD(args)...);
182 template <std::size_t I,
class... Int>
183 constexpr int order(
Arg<I> const&, Int... orders)
185 return get_element(index_t<I>{}, orders...);
188 template <std::
size_t I, std::
size_t J>
189 constexpr auto partial(Arg<I>
const&, index_t<J>)
191 return StaticConstant<
int,(I==J ? 1 : 0)>{};
196 template <std::
size_t I>
199 template <
class T,
int N>
200 constexpr T
const& operator()(Dune::FieldVector<T,N>
const& vec)
const
205 friend constexpr int order(
Get const&,
int d)
213 explicit constexpr Get_(std::size_t i)
217 template <
class T,
int N>
218 constexpr T
const& operator()(Dune::FieldVector<T,N>
const& vec)
const
223 friend constexpr int order(
Get_ const&,
int d)
Functor representing a constant value.
Definition Basic.hpp:97
(Unary-)Functor representing the identity
Definition Basic.hpp:74
Functor representing a constant value.
Definition Basic.hpp:129
Functor representing a static constant value.
Definition Basic.hpp:47