From 4fe73e97f5e31ac8a99372742061d1a60c0e6d0b Mon Sep 17 00:00:00 2001
From: Daniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Date: Tue, 26 Jun 2018 01:13:11 +0200
Subject: [PATCH] Return iterator by const reference

---
 include/deal.II/base/iterator_range.h | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/include/deal.II/base/iterator_range.h b/include/deal.II/base/iterator_range.h
index eaba74d719..eb45a2f8ee 100644
--- a/include/deal.II/base/iterator_range.h
+++ b/include/deal.II/base/iterator_range.h
@@ -142,7 +142,7 @@ public:
      * Dereferencing operator.
      * @return The iterator within the collection currently pointed to.
      */
-    BaseIterator operator*() const;
+    const BaseIterator &operator*() const;
 
     /**
      * Dereferencing operator.
@@ -231,8 +231,8 @@ private:
   /**
    * Iterators characterizing the begin and end of the range.
    */
-  const iterator it_begin;
-  const iterator it_end;
+  const IteratorOverIterators it_begin;
+  const IteratorOverIterators it_end;
 };
 
 
@@ -248,7 +248,8 @@ inline IteratorRange<Iterator>::IteratorOverIterators::IteratorOverIterators(
 
 
 template <typename Iterator>
-inline typename IteratorRange<Iterator>::IteratorOverIterators::BaseIterator
+inline const typename IteratorRange<
+  Iterator>::IteratorOverIterators::BaseIterator &
   IteratorRange<Iterator>::IteratorOverIterators::operator*() const
 {
   return element_of_iterator_collection;
@@ -316,7 +317,7 @@ template <typename Iterator>
 inline typename IteratorRange<Iterator>::IteratorOverIterators
 IteratorRange<Iterator>::begin()
 {
-  return IteratorOverIterators(it_begin);
+  return it_begin;
 }
 
 
@@ -324,7 +325,7 @@ template <typename Iterator>
 inline typename IteratorRange<Iterator>::IteratorOverIterators
 IteratorRange<Iterator>::end()
 {
-  return IteratorOverIterators(it_end);
+  return it_end;
 }
 
 
-- 
2.39.5