diff --git a/AK/NonnullPtrVector.h b/AK/NonnullPtrVector.h index c628196c1a..6db27644d3 100644 --- a/AK/NonnullPtrVector.h +++ b/AK/NonnullPtrVector.h @@ -32,19 +32,20 @@ public: using ConstIterator = SimpleIterator; using Iterator = SimpleIterator; using ReverseIterator = SimpleReverseIterator; + using ReverseConstIterator = SimpleReverseIterator; ALWAYS_INLINE constexpr ConstIterator begin() const { return ConstIterator::begin(*this); } ALWAYS_INLINE constexpr Iterator begin() { return Iterator::begin(*this); } ALWAYS_INLINE constexpr ReverseIterator rbegin() { return ReverseIterator::rbegin(*this); } + ALWAYS_INLINE constexpr ReverseConstIterator rbegin() const { return ReverseConstIterator::rbegin(*this); } ALWAYS_INLINE constexpr ConstIterator end() const { return ConstIterator::end(*this); } ALWAYS_INLINE constexpr Iterator end() { return Iterator::end(*this); } ALWAYS_INLINE constexpr ReverseIterator rend() { return ReverseIterator::rend(*this); } + ALWAYS_INLINE constexpr ReverseConstIterator rend() const { return ReverseConstIterator::rend(*this); } - ALWAYS_INLINE constexpr auto in_reverse() - { - return ReverseWrapper::in_reverse(*this); - } + ALWAYS_INLINE constexpr auto in_reverse() { return ReverseWrapper::in_reverse(*this); } + ALWAYS_INLINE constexpr auto in_reverse() const { return ReverseWrapper::in_reverse(*this); } ALWAYS_INLINE PtrType& ptr_at(size_t index) { return Base::at(index); } ALWAYS_INLINE const PtrType& ptr_at(size_t index) const { return Base::at(index); } diff --git a/AK/Vector.h b/AK/Vector.h index 0f6bef5179..7a4f578a3c 100644 --- a/AK/Vector.h +++ b/AK/Vector.h @@ -702,20 +702,28 @@ public: using ConstIterator = SimpleIterator; using Iterator = SimpleIterator; using ReverseIterator = SimpleReverseIterator; + using ReverseConstIterator = SimpleReverseIterator; ConstIterator begin() const { return ConstIterator::begin(*this); } Iterator begin() { return Iterator::begin(*this); } ReverseIterator rbegin() { return ReverseIterator::rbegin(*this); } + ReverseConstIterator rbegin() const { return ReverseConstIterator::rbegin(*this); } ConstIterator end() const { return ConstIterator::end(*this); } Iterator end() { return Iterator::end(*this); } ReverseIterator rend() { return ReverseIterator::rend(*this); } + ReverseConstIterator rend() const { return ReverseConstIterator::rend(*this); } ALWAYS_INLINE constexpr auto in_reverse() { return ReverseWrapper::in_reverse(*this); } + ALWAYS_INLINE constexpr auto in_reverse() const + { + return ReverseWrapper::in_reverse(*this); + } + template ConstIterator find_if(TUnaryPredicate&& finder) const {