3 #ifndef DUNE_FUNCTIONS_COMMON_DIFFERENTIABLE_FUNCTION_HH
4 #define DUNE_FUNCTIONS_COMMON_DIFFERENTIABLE_FUNCTION_HH
8 #include <dune/common/typeutilities.hh>
27 template<
class Signature,
template<
class>
class DerivativeTraits=DefaultDerivativeTraits,
size_t bufferSize=56>
37 template<
class S,
template<
class>
class DerivativeTraits,
size_t bufferSize>
38 struct DifferentiableFunctionTraits
56 using Concept = DifferentiableFunctionWrapperInterface<Signature, DerivativeInterface>;
60 using Model = DifferentiableFunctionWrapperImplementation<Signature, DerivativeInterface, B>;
80 template<
class Range,
class Domain,
template<
class>
class DerivativeTraits,
size_t bufferSize>
83 typename Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>::Concept,
84 Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>::template Model>
86 using Traits = Imp::DifferentiableFunctionTraits<Range(Domain), DerivativeTraits, bufferSize>;
105 template<
class F, disableCopyMove<DifferentiableFunction, F> = 0 >
107 Base(std::forward<F>(f))
118 Range operator() (
const Domain& x)
const
120 return this->asInterface().operator()(x);
132 return t.asInterface().derivative();
142 #endif // DUNE_FUNCTIONS_COMMON_DIFFERENTIABLE_FUNCTION_HH