12#ifndef DUMUX_TYPETRAITS_GRID_DISCRETIZATION_HH
13#define DUMUX_TYPETRAITS_GRID_DISCRETIZATION_HH
25struct GridDiscretizationType
27 static_assert(AlwaysFalse<T>::value,
"Type exports neither GridGeometry nor GridDiscretization");
32 requires requires {
typename T::GridGeometry; }
33struct GridDiscretizationType<T>
34{
using type =
typename T::GridGeometry; };
38 requires (
requires {
typename T::GridDiscretization; }
39 && !
requires {
typename T::GridGeometry; })
40struct GridDiscretizationType<T>
41{
using type =
typename T::GridDiscretization; };
64template<
class T,
class... Args>
67 if constexpr (
requires { t.gridDiscretization(std::forward<Args>(args)...); })
68 return t.gridDiscretization(std::forward<Args>(args)...);
70 return t.gridGeometry(std::forward<Args>(args)...);
decltype(auto) gridDiscretization(const T &t, Args &&... args)
The grid discretization.
Definition griddiscretization.hh:65
typename Detail::GridDiscretizationType< T >::type GridDiscretization_t
The grid discretization type of a class exporting it.
Definition griddiscretization.hh:54
Definition cvfelocalresidual.hh:25