7#ifndef DUNE_FUNCTIONS_COMMON_DIFFERENTIABLE_FUNCTION_HH
8#define DUNE_FUNCTIONS_COMMON_DIFFERENTIABLE_FUNCTION_HH
12#include <dune/common/typeutilities.hh>
41 template<
class S,
template<
class>
class DerivativeTraits,
size_t bufferSize>
42 struct DifferentiableFunctionTraits
60 using Concept = DifferentiableFunctionWrapperInterface<Signature, DerivativeInterface>;
64 using Model = DifferentiableFunctionWrapperImplementation<Signature, DerivativeInterface, B>;
84template<
class Range,
class Domain,
template<
class>
class DerivativeTraits,
size_t bufferSize>
87 typename Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>::Concept,
88 Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>::template Model>
90 using Traits = Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>;
94 using DerivativeInterface =
typename Traits::DerivativeInterface;
109 template<
class F, disableCopyMove<DifferentiableFunction, F> = 0 >
111 Base(std::forward<F>(f))
122 Range operator() (
const Domain& x)
const
136 return t.asInterface().derivative();
static constexpr bool isFunction()
Check if F models the Function concept with given signature.
Definition functionconcepts.hh:92
friend DerivativeInterface derivative(const DifferentiableFunction &t)
Get derivative of wrapped function.
Definition differentiablefunction.hh:134
Definition monomialset.hh:19
Definition monomialset.hh:19
Definition backends/concepts.hh:17
Default implementation for derivative traits.
Definition defaultderivativetraits.hh:41
Definition differentiablefunction.hh:33
DifferentiableFunction(F &&f)
Construct from function.
Definition differentiablefunction.hh:110
DifferentiableFunction()=default
Default constructor.
Helper class to deduce the signature of a callable.
Definition signature.hh:60
TypeErasureBase(T &&t)
Definition typeerasure.hh:174
Imp::DifferentiableFunctionTraits< Range(Domain), DerivativeTraits, bufferSize >::Concept & asInterface()
Definition typeerasure.hh:182