diff --git a/dune/xt/functions/inverse.hh b/dune/xt/functions/inverse.hh index e2be97d232e7f01346b2c8009c3e198af783a9b4..b79280d2da2760cd389a576349dcc409f5315d3a 100644 --- a/dune/xt/functions/inverse.hh +++ b/dune/xt/functions/inverse.hh @@ -251,29 +251,35 @@ private: template <class E, size_t r, size_t rC, class R> -std::enable_if_t<internal::InverseFunctionHelper<ElementFunctionInterface<E, r, rC, R>>::available, - InverseElementFunction<ElementFunctionInterface<E, r, rC, R>>> -inverse(ElementFunctionInterface<E, r, rC, R>& func, const int order) +auto inverse(ElementFunctionInterface<E, r, rC, R>& func, const int order) { - return InverseElementFunction<ElementFunctionInterface<E, r, rC, R>>(func, order); + if constexpr (internal::InverseFunctionHelper<ElementFunctionInterface<E, r, rC, R>>::available) { + return InverseElementFunction<ElementFunctionInterface<E, r, rC, R>>(func, order); + } else { + static_assert(false, "No inverse implementation available"); + } } template <size_t d, size_t r, size_t rC, class R> -std::enable_if_t<internal::InverseFunctionHelper<FunctionInterface<d, r, rC, R>>::available, - InverseFunction<FunctionInterface<d, r, rC, R>>> -inverse(const FunctionInterface<d, r, rC, R>& func, const int order) +auto inverse(const FunctionInterface<d, r, rC, R>& func, const int order) { - return InverseFunction<FunctionInterface<d, r, rC, R>>(func, order); + if constexpr (internal::InverseFunctionHelper<FunctionInterface<d, r, rC, R>>::available) { + return InverseFunction<FunctionInterface<d, r, rC, R>>(func, order); + } else { + static_assert(false, "No inverse implementation available"); + } } template <class E, size_t r, size_t rC, class R> -std::enable_if_t<internal::InverseFunctionHelper<GridFunctionInterface<E, r, rC, R>>::available, - InverseGridFunction<GridFunctionInterface<E, r, rC, R>>> -inverse(const GridFunctionInterface<E, r, rC, R>& func, const int order) +auto inverse(const GridFunctionInterface<E, r, rC, R>& func, const int order) { - return InverseGridFunction<GridFunctionInterface<E, r, rC, R>>(func, order); + if constexpr (internal::InverseFunctionHelper<GridFunctionInterface<E, r, rC, R>>::available) { + return InverseGridFunction<GridFunctionInterface<E, r, rC, R>>(func, order); + } else { + static_assert(false, "No inverse implementation available"); + } }