AMDiS  0.3
The Adaptive Multi-Dimensional Simulation Toolbox
FunctionFromCallable.hpp
1 #pragma once
2 
3 #include <dune/common/version.hh>
4 
5 #if DUNE_VERSION_LT(DUNE_LOCALFUNCTIONS,2,8)
6 #include <dune/common/typeutilities.hh>
7 #include <dune/functions/common/functionfromcallable.hh>
8 #endif
9 
10 namespace AMDiS
11 {
12 #if DUNE_VERSION_LT(DUNE_LOCALFUNCTIONS,2,8)
13  namespace Impl
14  {
15  template <class Traits, class F,
16  class Range = typename Traits::RangeType,
17  class Domain = typename Traits::DomainType>
18  auto functionFromCallableImpl(F const& f, Dune::PriorityTag<2>)
19  {
20  return Dune::Functions::FunctionFromCallable<Range(Domain), F>(f);
21  }
22 
23  template <class Signature, class F>
24  auto functionFromCallableImpl(F const& f, Dune::PriorityTag<1>)
25  {
26  return Dune::Functions::FunctionFromCallable<Signature, F>(f);
27  }
28  }
29 
30  template <class SigTraits, class F>
31  auto functionFromCallable(F const& f)
32  {
33  return Impl::functionFromCallableImpl<SigTraits>(f, Dune::PriorityTag<10>{});
34  }
35 #else
36  template <class SigTraits, class F>
37  F functionFromCallable(F const& f) { return f; }
38 #endif
39 
40 } // end namespace AMDiS
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6