diff --git a/dune/solvers/solvers/criterion.hh b/dune/solvers/solvers/criterion.hh
index 259f8f2bbd399333dd556c5f64470f9c4dd5e0d2..a7c7370a09bf00e4fbf30d9ac7e1bd53e2a16734 100644
--- a/dune/solvers/solvers/criterion.hh
+++ b/dune/solvers/solvers/criterion.hh
@@ -52,7 +52,7 @@ namespace Dune {
        * of the header string coincide to get a readable log.
        */
       template<class F,
-        std::enable_if_t<std::is_convertible<std::result_of_t<F()>, Result>::value, int> = 0>
+        std::enable_if_t<std::is_convertible<std::invoke_result_t<F>, Result>::value, int> = 0>
       Criterion(F&& f, const std::string& header) :
         f_(std::forward<F>(f)),
         header_(header)
@@ -76,7 +76,7 @@ namespace Dune {
        * of the header string coincide to get a readable log.
        */
       template<class F,
-        std::enable_if_t<std::is_convertible<std::result_of_t<F()>, std::string>::value, int> = 0>
+        std::enable_if_t<std::is_convertible<std::invoke_result_t<F>, std::string>::value, int> = 0>
       Criterion(F&& f, const std::string& header) :
         f_( [=]() mutable {return std::make_tuple(false, f());} ),
         header_(header)