4#ifndef DUNE_PDELAB_BACKEND_ISTL_MATRIXFREE_CHECKLOPINTERFACE_HH
5#define DUNE_PDELAB_BACKEND_ISTL_MATRIXFREE_CHECKLOPINTERFACE_HH
36 template <
typename A>
constexpr auto test(
int)
37 ->
decltype(std::declval<T>()(std::declval<A>()), std::true_type())
39 return std::true_type();
41 template <
typename A>
constexpr std::false_type test(...)
43 return std::false_type();
49 return test<A>(
int());
68 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_volume(std::declval<bool>(),
70 std::declval<double>(),
71 std::declval<short int>(),
72 std::declval<long int>(),
73 std::declval<long long int&>()
76 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_volume_post_skeleton(std::declval<bool>(),
78 std::declval<double>(),
79 std::declval<short int>(),
80 std::declval<long int>(),
81 std::declval<long long int&>()
84 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_skeleton(std::declval<bool>(),
86 std::declval<double>(),
87 std::declval<short int>(),
88 std::declval<long int>(),
90 std::declval<double>(),
91 std::declval<short int>(),
92 std::declval<long int>(),
93 std::declval<long long int&>(),
94 std::declval<long long int&>()
97 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_boundary(std::declval<bool>(),
99 std::declval<double>(),
100 std::declval<short int>(),
101 std::declval<long int>(),
102 std::declval<long long int&>()
111 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_volume(std::declval<bool>(),
113 std::declval<double>(),
114 std::declval<double>(),
115 std::declval<long int>(),
116 std::declval<long long int&>()
119 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_volume_post_skeleton(std::declval<bool>(),
121 std::declval<double>(),
122 std::declval<double>(),
123 std::declval<long int>(),
124 std::declval<long long int&>()
127 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_skeleton(std::declval<bool>(),
129 std::declval<double>(),
130 std::declval<double>(),
131 std::declval<long int>(),
133 std::declval<double>(),
134 std::declval<double>(),
135 std::declval<long int>(),
136 std::declval<long long int&>(),
137 std::declval<long long int&>()
140 lambdaToTemplate([](
auto&& lop) ->
decltype(lop.jacobian_apply_boundary(std::declval<bool>(),
142 std::declval<double>(),
143 std::declval<double>(),
144 std::declval<long int>(),
145 std::declval<long long int&>()
152 template <
typename T>
158 std::true_type>::type
160 return std::true_type();
162 template <
typename T>
168 std::false_type>::type
170 return std::false_type();
const P & p
Definition: constraints.hh:148
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
auto hasNewJacobianApplySkeleton
Definition: checklopinterface.hh:83
auto hasOldOrNewJacobianApplyBoundary
Definition: checklopinterface.hh:139
auto hasNewJacobianApplyBoundary
Definition: checklopinterface.hh:96
auto hasNewJacobianApplyVolumePostSkeleton
Definition: checklopinterface.hh:75
auto hasOldOrNewJacobianApplyVolume
Definition: checklopinterface.hh:110
auto hasNewJacobianApplyVolume
Definition: checklopinterface.hh:67
auto hasOldOrNewJacobianApplyVolumePostSkeleton
Definition: checklopinterface.hh:118
constexpr auto hasOldLOPInterface(T &t) -> typename std::enable_if<(decltype(hasOldOrNewJacobianApplyVolume(t))::value &&!decltype(hasNewJacobianApplyVolume(t))::value)||(decltype(hasOldOrNewJacobianApplyVolumePostSkeleton(t))::value &&!decltype(hasNewJacobianApplyVolumePostSkeleton(t))::value)||(decltype(hasOldOrNewJacobianApplySkeleton(t))::value &&!decltype(hasNewJacobianApplySkeleton(t))::value)||(decltype(hasOldOrNewJacobianApplyBoundary(t))::value &&!decltype(hasNewJacobianApplyBoundary(t))::value), std::true_type >::type
Definition: checklopinterface.hh:153
constexpr auto lambdaToTemplate(const T &t)
Definition: checklopinterface.hh:53
auto hasOldOrNewJacobianApplySkeleton
Definition: checklopinterface.hh:126
Definition: checklopinterface.hh:34
constexpr auto operator()(const A &p)
Definition: checklopinterface.hh:47
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139