From 75dfc7883d08e323d8368e33410b3bb1e7fad5a1 Mon Sep 17 00:00:00 2001 From: Levi Tamasi Date: Fri, 22 Nov 2019 18:12:35 -0800 Subject: [PATCH] Fix the constness issues around autovector::iterator_impl's dereference operators (#6057) Summary: As described in detail in issue https://github.com/facebook/rocksdb/issues/6048, iterators' dereference operators (`*`, `->`, and `[]`) should return `pointer`s/`reference`s (as opposed to `const_pointer`s/`const_reference`s) even if the iterator itself is `const` to be in sync with the standard's iterator concept. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6057 Test Plan: make check Differential Revision: D18623235 Pulled By: ltamasi fbshipit-source-id: 04e82d73bc0c67fb0ded018383af8dfc332050cc --- util/autovector.h | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/util/autovector.h b/util/autovector.h index 7ad4f5bef1e..010d8689586 100644 --- a/util/autovector.h +++ b/util/autovector.h @@ -120,35 +120,20 @@ class autovector { } // -- Reference - reference operator*() { + reference operator*() const { assert(vect_->size() >= index_); return (*vect_)[index_]; } - const_reference operator*() const { - assert(vect_->size() >= index_); - return (*vect_)[index_]; - } - - pointer operator->() { - assert(vect_->size() >= index_); - return &(*vect_)[index_]; - } - - const_pointer operator->() const { + pointer operator->() const { assert(vect_->size() >= index_); return &(*vect_)[index_]; } - reference operator[](difference_type len) { - return *(*this + len); - } - - const_reference operator[](difference_type len) const { + reference operator[](difference_type len) const { return *(*this + len); } - // -- Logical Operators bool operator==(const self_type& other) const { assert(vect_ == other.vect_);