diff --git a/dune/solvers/norms/twonorm.hh b/dune/solvers/norms/twonorm.hh
index ad06cde33637aed8cc7dbb7667a7b41db197bc9a..d36c8f6f688181f7db3de38156e3b6693d103da0 100644
--- a/dune/solvers/norms/twonorm.hh
+++ b/dune/solvers/norms/twonorm.hh
@@ -7,6 +7,7 @@
 #include <cstring> // For size_t
 
 #include <dune/common/fvector.hh>
+#include <dune/common/hybridutilities.hh>
 
 #include "norm.hh"
 
@@ -43,15 +44,15 @@ class TwoNorm : public Norm<V>
         virtual field_type diff(const VectorType& f1, const VectorType& f2) const override
         {
             assert(f1.size() == f2.size());
-            double r = 0.0;
+            field_type r = 0.0;
 
-            for (size_t i=0; i<f1.size(); ++i)
+            Dune::Hybrid::forEach(Dune::Hybrid::integralRange(Dune::Hybrid::size(f1)), [&](auto&& i)
             {
-                typename VectorType::block_type block = f1[i];
+                auto block = f1[i];
                 block -= f2[i];
 
                 r += Dune::Impl::asVector(block).two_norm2();
-            }
+            });
 
             return std::sqrt(r);
         }