diff --git a/dune/istl/test/overlappingschwarztest.cc b/dune/istl/test/overlappingschwarztest.cc
index 14e67b625d2ec121dc3e85af25af48a6789b886a..aed5a384f3f7ed8e854b65f0bdd3cc6d7c67f853 100644
--- a/dune/istl/test/overlappingschwarztest.cc
+++ b/dune/istl/test/overlappingschwarztest.cc
@@ -11,6 +11,8 @@
 #include <dune/common/sllist.hh>
 #include <dune/istl/overlappingschwarz.hh>
 
+#include <iterator>
+
 int main(int argc, char** argv)
 {
 
@@ -110,7 +112,8 @@ int main(int argc, char** argv)
   if(N<10) {
     int i=0;
     for(iterator iter=domains.begin(); iter != domains.end(); ++iter) {
-      typedef iterator::value_type::const_iterator entry_iterator;
+      typedef std::iterator_traits<iterator>::value_type
+      ::const_iterator entry_iterator;
       std::cout<<"domain "<<i++<<":";
       for(entry_iterator entry = iter->begin(); entry != iter->end(); ++entry) {
         std::cout<<" "<<*entry;