diff --git a/dune/istl/io.hh b/dune/istl/io.hh
index b01c049e97c184d00a037760ef429e9dec5a5247..d7bd69c2200e0c214675e7a78d22d90041da20a1 100644
--- a/dune/istl/io.hh
+++ b/dune/istl/io.hh
@@ -147,14 +147,14 @@ namespace Dune {
    * #include <dune/istl/io.hh>
    * \endcode
    */
-  template<class K>
+  template<class K,
+    std::enable_if_t<Dune::IsNumber<K>::value, int> = 0>
   void print_row (std::ostream& s, const K& value,
                   [[maybe_unused]] typename FieldMatrix<K,1,1>::size_type I,
                   [[maybe_unused]] typename FieldMatrix<K,1,1>::size_type J,
                   [[maybe_unused]] typename FieldMatrix<K,1,1>::size_type therow,
                   int width,
-                  [[maybe_unused]] int precision,
-                  typename std::enable_if_t<Dune::IsNumber<K>::value>* sfinae = nullptr)
+                  [[maybe_unused]] int precision)
   {
     s << " ";         // space in front of each entry
     s.width(width);   // set width for each entry anew
@@ -168,11 +168,11 @@ namespace Dune {
    * #include <dune/istl/io.hh>
    * \endcode
    */
-  template<class M>
+  template<class M,
+    std::enable_if_t<not Dune::IsNumber<M>::value, int> = 0>
   void print_row (std::ostream& s, const M& A, typename M::size_type I,
                   typename M::size_type J, typename M::size_type therow,
-                  int width, int precision,
-                  typename std::enable_if_t<!Dune::IsNumber<M>::value>* sfinae = nullptr)
+                  int width, int precision)
   {
     typename M::size_type i0=I;
     for (typename M::size_type i=0; i<A.N(); i++)
@@ -407,11 +407,11 @@ namespace Dune {
    *
    * This specialization for numbers ends the recursion
    */
-  template <class FieldType>
+  template <class FieldType,
+    std::enable_if_t<Dune::IsNumber<FieldType>::value, int> = 0>
   void writeMatrixToMatlabHelper(const FieldType& value,
                                  int rowOffset, int colOffset,
-                                 std::ostream& s,
-                                 typename std::enable_if_t<Dune::IsNumber<FieldType>::value>* sfinae = nullptr)
+                                 std::ostream& s)
   {
     //+1 for Matlab numbering
     s << rowOffset + 1 << " " << colOffset + 1 << " ";
@@ -425,11 +425,11 @@ namespace Dune {
    * #include <dune/istl/io.hh>
    * \endcode
    */
-  template <class MatrixType>
+  template <class MatrixType,
+    std::enable_if_t<not Dune::IsNumber<MatrixType>::value, int> = 0>
   void writeMatrixToMatlabHelper(const MatrixType& matrix,
                                  int externalRowOffset, int externalColOffset,
-                                 std::ostream& s,
-                                 typename std::enable_if_t<!Dune::IsNumber<MatrixType>::value>* sfinae = nullptr)
+                                 std::ostream& s)
   {
     // Precompute the accumulated sizes of the columns
     std::vector<typename MatrixType::size_type> colOffset(matrix.M());
diff --git a/dune/python/istl/bvector.hh b/dune/python/istl/bvector.hh
index 26bc499af3137a542ac7e8c303ce5620ba6e6ca0..0411b9519ec568abe7cdb66a6e73a8c0e6516fa5 100644
--- a/dune/python/istl/bvector.hh
+++ b/dune/python/istl/bvector.hh
@@ -183,7 +183,7 @@ namespace Dune
     //the generator actually takes the scope into account which is why we do nothing with it here
     //so when doing a dune.istl blockvector it doesn't actually define any of the rest of the bindings
     template< class BlockVector, class ... options >
-    void registerBlockVector ( pybind11::handle scope, pybind11::class_<BlockVector, options ... > cls )
+    void registerBlockVector ( pybind11::handle /*scope*/, pybind11::class_<BlockVector, options ... > cls )
     {
       typedef typename BlockVector::size_type size_type;
       using pybind11::operator""_a;
diff --git a/dune/python/istl/preconditioners.hh b/dune/python/istl/preconditioners.hh
index f11f45cacdb89a5070c8bf277aaf2fe42d57d963..547d7308273a3212828de320c3e6997ccc8f88cd 100644
--- a/dune/python/istl/preconditioners.hh
+++ b/dune/python/istl/preconditioners.hh
@@ -51,7 +51,7 @@ namespace Dune
     // -----------------------
 
     template< class X, class Y, class... options >
-    inline void registerPreconditioners ( pybind11::module module, pybind11::class_< LinearOperator< X, Y >, options...  > cls )
+    inline void registerPreconditioners ( pybind11::module module, pybind11::class_< LinearOperator< X, Y >, options...  > /*cls*/ )
     {
       typedef Dune::Preconditioner< X, Y > Preconditioner;
 
@@ -81,7 +81,7 @@ namespace Dune
     }
 
     template< class M, class X, class Y, class... options >
-    inline void registerMatrixPreconditioners ( pybind11::module module, pybind11::class_< LinearOperator< X, Y >, options... > cls )
+    inline void registerMatrixPreconditioners ( pybind11::module module, pybind11::class_< LinearOperator< X, Y >, options... > /*cls*/ )
     {
       typedef Dune::Preconditioner< X, Y > Preconditioner;