diff --git a/dune/istl/multitypeblockmatrix.hh b/dune/istl/multitypeblockmatrix.hh
index 57f73b2c7ea6ddd65dd4f16d2e47a94a0370f0a4..e15ab14705ed0c45825644d0915916c6b6aca1b5 100644
--- a/dune/istl/multitypeblockmatrix.hh
+++ b/dune/istl/multitypeblockmatrix.hh
@@ -613,5 +613,14 @@ namespace std
   {
     using type = typename std::tuple_element<i, std::tuple<Args...> >::type;
   };
+
+  /** \brief Make std::tuple_size work for MultiTypeBlockMatrix
+   *
+   * It derives from std::tuple after all.
+   */
+  template <typename... Args>
+  struct tuple_size<Dune::MultiTypeBlockMatrix<Args...> >
+    : std::integral_constant<std::size_t, sizeof...(Args)>
+  {};
 }
 #endif
diff --git a/dune/istl/multitypeblockvector.hh b/dune/istl/multitypeblockvector.hh
index 5f1a3b24e3486ab5ffe33e402f408572ab67dc25..e512fcb3f2cf2543f775cb3f3348fceb78a24921 100644
--- a/dune/istl/multitypeblockvector.hh
+++ b/dune/istl/multitypeblockvector.hh
@@ -345,6 +345,15 @@ namespace std
   {
     using type = typename std::tuple_element<i, std::tuple<Args...> >::type;
   };
+
+  /** \brief Make std::tuple_size work for MultiTypeBlockVector
+   *
+   * It derives from std::tuple after all.
+   */
+  template <typename... Args>
+  struct tuple_size<Dune::MultiTypeBlockVector<Args...> >
+    : std::integral_constant<std::size_t, sizeof...(Args)>
+  {};
 }
 
 #endif