diff --git a/dumux/common/doubleexpintegrator.hh b/dumux/common/doubleexpintegrator.hh
index 3d6c81838ebc8694e4f45e2b68497cc66563b889..0b4ba4c848a64bb2be2f243dd8ac7b1b09801d87 100644
--- a/dumux/common/doubleexpintegrator.hh
+++ b/dumux/common/doubleexpintegrator.hh
@@ -54,8 +54,8 @@
 
 #include <cmath>
 #include <limits>
+#include <type_traits>
 
-#include <dune/common/std/type_traits.hh>
 #include <dumux/common/doubleexpintegrationconstants.hh>
 
 namespace Dumux {
@@ -78,7 +78,7 @@ public:
      * \return The value of the integral
      */
     template<class Function,
-             typename std::enable_if_t<Dune::Std::is_invocable<Function, Scalar>::value>...>
+             typename std::enable_if_t<std::is_invocable_r_v<Scalar, Function, Scalar>>...>
     static Scalar integrate(const Function& f,
                             const Scalar a,
                             const Scalar b,
@@ -107,7 +107,7 @@ public:
      * \return The value of the integral.
      */
     template<class Function,
-             typename std::enable_if_t<Dune::Std::is_invocable<Function, Scalar>::value>...>
+             typename std::enable_if_t<std::is_invocable_r_v<Scalar, Function, Scalar>>...>
     static Scalar integrate(const Function& f,
                             const Scalar a,
                             const Scalar b,
diff --git a/dumux/common/integrate.hh b/dumux/common/integrate.hh
index 09b2e2463d79906b421f04e55b780f370905e896..679753185fb13f8f945bc4b6b00eb6a76147d0db 100644
--- a/dumux/common/integrate.hh
+++ b/dumux/common/integrate.hh
@@ -29,7 +29,6 @@
 
 #include <dune/geometry/quadraturerules.hh>
 #include <dune/common/concept.hh>
-#include <dune/common/std/type_traits.hh>
 
 #if HAVE_DUNE_FUNCTIONS
 #include <dune/functions/gridfunctions/gridfunction.hh>
@@ -262,7 +261,7 @@ auto integrateL2Error(const GridView& gv,
  * \return The value of the integral
  */
 template<class Scalar, class Function,
-          typename std::enable_if_t<Dune::Std::is_invocable<Function, Scalar>::value>...>
+          typename std::enable_if_t<std::is_invocable_r_v<Scalar, Function, Scalar>>...>
 Scalar integrateScalarFunction(const Function& f,
                                const Scalar lowerBound,
                                const Scalar upperBound,
diff --git a/dumux/nonlinear/findscalarroot.hh b/dumux/nonlinear/findscalarroot.hh
index 7c230d47fe9f5f9f57a10b3dc6349ea31235eca9..9eff421612f716515155b01d43fd514b705b7168 100644
--- a/dumux/nonlinear/findscalarroot.hh
+++ b/dumux/nonlinear/findscalarroot.hh
@@ -26,8 +26,7 @@
 
 #include <cmath>
 #include <limits>
-
-#include <dune/common/std/type_traits.hh>
+#include <type_traits>
 
 #include <dumux/common/exceptions.hh>
 #include <dumux/common/parameters.hh>
@@ -43,11 +42,10 @@ namespace Dumux {
  * \param derivative Derivative of the residual
  * \param tol Relative shift tolerance
  * \param maxIter Maximum number of iterations
- * \todo replace std::result_of by std::invoke_result for C++17
  */
 template<class Scalar, class ResFunc, class DerivFunc,
-         typename std::enable_if_t<Dune::Std::is_invocable<ResFunc, Scalar>::value &&
-                                   Dune::Std::is_invocable<DerivFunc, Scalar>::value>...>
+         typename std::enable_if_t<std::is_invocable_r_v<Scalar, ResFunc, Scalar> &&
+                                   std::is_invocable_r_v<Scalar, DerivFunc, Scalar>>...>
 Scalar findScalarRootNewton(Scalar xOld, const ResFunc& residual, const DerivFunc& derivative,
                             const Scalar tol = 1e-13, const int maxIter = 200)
 {
@@ -87,7 +85,7 @@ Scalar findScalarRootNewton(Scalar xOld, const ResFunc& residual, const DerivFun
  * \param maxIter Maximum number of iterations
  */
 template<class Scalar, class ResFunc,
-          typename std::enable_if_t<Dune::Std::is_invocable<ResFunc, Scalar>::value>...>
+          typename std::enable_if_t<std::is_invocable_r_v<Scalar, ResFunc, Scalar>>...>
 Scalar findScalarRootNewton(Scalar xOld, const ResFunc& residual,
                             const Scalar tol = 1e-13, const int maxIter = 200)
 {
@@ -109,7 +107,7 @@ Scalar findScalarRootNewton(Scalar xOld, const ResFunc& residual,
  * \param maxIter Maximum number of iterations
  */
 template<class Scalar, class ResFunc,
-         typename std::enable_if_t<Dune::Std::is_invocable<ResFunc, Scalar>::value>...>
+         typename std::enable_if_t<std::is_invocable_r_v<Scalar, ResFunc, Scalar>>...>
 Scalar findScalarRootBrent(Scalar a, Scalar b, const ResFunc& residual,
                            const Scalar tol = 1e-13, const int maxIter = 200)
 {