diff --git a/dune/solvers/iterationsteps/blockgssteps.hh b/dune/solvers/iterationsteps/blockgssteps.hh
index 1b3358776296c731549ed90566ece2bd21b5ec68..00b7e8eede4397e4efddd25fb9d555b79214bae7 100644
--- a/dune/solvers/iterationsteps/blockgssteps.hh
+++ b/dune/solvers/iterationsteps/blockgssteps.hh
@@ -140,9 +140,9 @@ template <class LinearSolver>
 auto truncate(LinearSolver&& linearSolver) {
   return [&, localSolver = std::move(linearSolver) ](
       const auto& m, const auto& b, const auto& ignore) {
+    using Return = typename std::result_of<LinearSolver(decltype(m), decltype(b))>::type;
     if (ignore.all())
-      return typename std::result_of<
-          LinearSolver(decltype(m), decltype(b))>::type{0};
+      return Return{0};
 
     if (ignore.none())
       return linearSolver(m, b);