diff options
author | 2023-11-06 13:53:03 +0100 | |
---|---|---|
committer | 2023-11-06 17:29:51 +0000 | |
commit | 67b53d01d0b66b4d4e07bf34af708e457ac1d5b1 (patch) | |
tree | 6725294f99731c09ce4d27736f34356e0d0e27b0 | |
parent | 5910ce7b8ea8a817bcddcb6b23bf4c27925a29fe (diff) |
Clean up iterator typedefs.
This is a follow-up to
https://android-review.googlesource.com/2736679 ,
https://android-review.googlesource.com/2746156 .
Test: m
Bug: 175635923
Change-Id: Ia80fbea3b0570c6127fc0158cd43060b97a21ee7
-rw-r--r-- | libartbase/base/bit_vector.h | 2 | ||||
-rw-r--r-- | libartbase/base/stl_util.h | 10 | ||||
-rw-r--r-- | libartbase/base/transform_iterator.h | 5 |
3 files changed, 10 insertions, 7 deletions
diff --git a/libartbase/base/bit_vector.h b/libartbase/base/bit_vector.h index a710c5d6ea..ea26b5a682 100644 --- a/libartbase/base/bit_vector.h +++ b/libartbase/base/bit_vector.h @@ -57,7 +57,7 @@ class BitVector { using value_type = uint32_t; using difference_type = ptrdiff_t; using pointer = void; - using reference = uint32_t; + using reference = void; bool operator==(const IndexIterator& other) const; diff --git a/libartbase/base/stl_util.h b/libartbase/base/stl_util.h index 87b6d4bf3e..53eb410519 100644 --- a/libartbase/base/stl_util.h +++ b/libartbase/base/stl_util.h @@ -195,8 +195,8 @@ class CountIter { using iterator_category = std::forward_iterator_tag; using value_type = size_t; using difference_type = size_t; - using pointer = size_t; - using reference = size_t; + using pointer = void; + using reference = void; CountIter() : count_(0) {} explicit CountIter(size_t count) : count_(count) {} @@ -251,10 +251,10 @@ template <typename RealIter, typename Filter> struct FilterIterator { public: using iterator_category = std::forward_iterator_tag; - using value_type = typename RealIter::value_type; + using value_type = typename std::iterator_traits<RealIter>::value_type; using difference_type = ptrdiff_t; - using pointer = typename RealIter::pointer; - using reference = typename RealIter::reference; + using pointer = typename std::iterator_traits<RealIter>::pointer; + using reference = typename std::iterator_traits<RealIter>::reference; FilterIterator(RealIter rl, Filter cond, diff --git a/libartbase/base/transform_iterator.h b/libartbase/base/transform_iterator.h index 552f31fa3b..3f7c952b60 100644 --- a/libartbase/base/transform_iterator.h +++ b/libartbase/base/transform_iterator.h @@ -43,7 +43,10 @@ class TransformIterator { typename std::iterator_traits<BaseIterator>::iterator_category>, "Transform iterator base must be an input iterator."); - using InputType = typename std::iterator_traits<BaseIterator>::reference; + using BaseReference = typename std::iterator_traits<BaseIterator>::reference; + using InputType = std::conditional_t<std::is_same_v<BaseReference, void>, + typename std::iterator_traits<BaseIterator>::value_type, + BaseReference>; using ResultType = std::result_of_t<Function(InputType)>; public: |