From: Paul Stemmet Date: Wed, 19 Feb 2025 16:33:39 +0000 (+0000) Subject: chore: fix two usages of std::iterator (deprecated) X-Git-Tag: v20.3.0~143^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b551b453050c4efa0bd94427ebf076b959112fd0;p=ceph.git chore: fix two usages of std::iterator (deprecated) This trait has been deprecated in C++17, with users instructed to migrate to defining each associated type when implementing an iterator. This quiets the _GLIBCXX17_DEPRECATED warnings when compiling the project on a sufficiently new gcc. This follows on from previous efforts in 8b8a96d (#45198). References: https://github.com/ceph/ceph/pull/45198 References: https://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/ Signed-off-by: Paul Stemmet --- diff --git a/src/include/rangeset.h b/src/include/rangeset.h index e7e3d047c72..f19af0b61e4 100644 --- a/src/include/rangeset.h +++ b/src/include/rangeset.h @@ -55,9 +55,14 @@ struct _rangeset_base { template -class rangeset_iterator : - public std::iterator +class rangeset_iterator { + using iterator_category = std::input_iterator_tag; + using value_type = T; + using difference_type = std::ptrdiff_t; + using pointer = T*; + using reference = T&; + //typedef typename map::iterator mapit; map ranges; diff --git a/src/msg/async/dpdk/circular_buffer.h b/src/msg/async/dpdk/circular_buffer.h index 2c92c120444..bf5d422dac6 100644 --- a/src/msg/async/dpdk/circular_buffer.h +++ b/src/msg/async/dpdk/circular_buffer.h @@ -89,8 +89,12 @@ class circular_buffer { size_t mask(size_t idx) const; template - struct cbiterator : std::iterator { - typedef std::iterator super_t; + struct cbiterator { + using iterator_category = std::random_access_iterator_tag; + using value_type = ValueType; + using difference_type = std::ptrdiff_t; + using pointer = ValueType*; + using reference = ValueType&; ValueType& operator*() const { return cb->_impl.storage[cb->mask(idx)]; } ValueType* operator->() const { return &cb->_impl.storage[cb->mask(idx)]; } @@ -116,17 +120,17 @@ class circular_buffer { idx--; return v; } - cbiterator operator+(typename super_t::difference_type n) const { + cbiterator operator+(difference_type n) const { return cbiterator(cb, idx + n); } - cbiterator operator-(typename super_t::difference_type n) const { + cbiterator operator-(difference_type n) const { return cbiterator(cb, idx - n); } - cbiterator& operator+=(typename super_t::difference_type n) { + cbiterator& operator+=(difference_type n) { idx += n; return *this; } - cbiterator& operator-=(typename super_t::difference_type n) { + cbiterator& operator-=(difference_type n) { idx -= n; return *this; } @@ -148,7 +152,7 @@ class circular_buffer { bool operator<=(const cbiterator& rhs) const { return idx <= rhs.idx; } - typename super_t::difference_type operator-(const cbiterator& rhs) const { + difference_type operator-(const cbiterator& rhs) const { return idx - rhs.idx; } private: