Fix flatbuffers reverse_iterator 06/200806/5
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 4 Mar 2019 09:35:44 +0000 (10:35 +0100)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 7 Mar 2019 14:22:38 +0000 (15:22 +0100)
Change-Id: I77233a416d76198175859c19adccdb41b5ab2ea8

src/internal/include/flatbuffers/flatbuffers.h

index 062c7f5..8c87dff 100644 (file)
@@ -201,14 +201,11 @@ template<typename T, typename IT> struct VectorIterator {
 template<typename Iterator> struct VectorReverseIterator :
   public std::reverse_iterator<Iterator> {
 
-  explicit VectorReverseIterator(Iterator iter) : iter_(iter) {}
+  explicit VectorReverseIterator(Iterator iter) : std::reverse_iterator<Iterator>(iter) {}
 
-  typename Iterator::value_type operator*() const { return *(iter_ - 1); }
+  typename Iterator::value_type operator*() const { return *(std::reverse_iterator<Iterator>::current - 1); }
 
-  typename Iterator::value_type operator->() const { return *(iter_ - 1); }
-
- private:
-  Iterator iter_;
+  typename Iterator::value_type operator->() const { return *(std::reverse_iterator<Iterator>::current - 1); }
 };
 
 struct String;
@@ -272,8 +269,8 @@ template<typename T> class Vector {
   reverse_iterator rbegin() { return reverse_iterator(end()); }
   const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
 
-  reverse_iterator rend() { return reverse_iterator(end()); }
-  const_reverse_iterator rend() const { return const_reverse_iterator(end()); }
+  reverse_iterator rend() { return reverse_iterator(begin()); }
+  const_reverse_iterator rend() const { return const_reverse_iterator(begin()); }
 
   const_iterator cbegin() const { return begin(); }