Allow operator-> to work from a FixedStreamArrayIterator.
authorAdrian McCarthy <amccarth@google.com>
Fri, 5 May 2017 17:14:00 +0000 (17:14 +0000)
committerAdrian McCarthy <amccarth@google.com>
Fri, 5 May 2017 17:14:00 +0000 (17:14 +0000)
This is similar to my recent fix for VarStreamArrayIterator, but the cause
(and thus the fix) is subtley different.  The FixedStreamArrayIterator
iterates over a const Array, so the iterator's value type must be const.

llvm-svn: 302257

llvm/include/llvm/Support/BinaryStreamArray.h

index c36e5da..b25c03a 100644 (file)
@@ -342,7 +342,7 @@ private:
 template <typename T>
 class FixedStreamArrayIterator
     : public iterator_facade_base<FixedStreamArrayIterator<T>,
-                                  std::random_access_iterator_tag, T> {
+                                  std::random_access_iterator_tag, const T> {
 
 public:
   FixedStreamArrayIterator(const FixedStreamArray<T> &Array, uint32_t Index)
@@ -356,6 +356,7 @@ public:
   }
 
   const T &operator*() const { return Array[Index]; }
+  const T &operator*() { return Array[Index]; }
 
   bool operator==(const FixedStreamArrayIterator<T> &R) const {
     assert(Array == R.Array);