]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Remove use of deprecated std::iterator (#1069)
authorFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 8 Jun 2022 12:12:31 +0000 (12:12 +0000)
committerAmos Jeffries <yadij@users.noreply.github.com>
Mon, 22 Aug 2022 15:09:12 +0000 (03:09 +1200)
c++17 deprecates std::iterator.
Explicitly declare traits in our iterator classes instead of
using std::iterator

src/base/EnumIterator.h
src/sbuf/SBuf.h

index 5d88100c45e761e6eea67ef072e8108a70665558..96cb826f05cc9188896a85411428566186ad74bf 100644 (file)
@@ -20,7 +20,7 @@
  * \see EnumIterator, ReverseEnumIterator
  */
 template <typename EnumType>
-class EnumIteratorBase : public std::iterator<std::bidirectional_iterator_tag, EnumType>
+class EnumIteratorBase
 {
 protected:
 #if HAVE_STD_UNDERLYING_TYPE
@@ -30,6 +30,12 @@ protected:
 #endif
 
 public:
+    using iterator_category = std::bidirectional_iterator_tag;
+    using value_type = EnumType;
+    using difference_type = std::ptrdiff_t;
+    using pointer = EnumType *;
+    using reference = EnumType &;
+
     explicit EnumIteratorBase(EnumType e) : current(static_cast<iterator_type>(e)) {}
 
     bool operator==(const EnumIteratorBase &i) const {
index ac98137b1cf2e07e7d8f5f5203c60cca7f350e30..964d8fb91877e4f7b39739c67227c619e78f9799 100644 (file)
@@ -45,9 +45,16 @@ class CharacterSet;
  * Please note that any operation on the underlying SBuf may invalidate
  * all iterators over it, resulting in undefined behavior by them.
  */
-class SBufIterator : public std::iterator<std::input_iterator_tag, char>
+class SBufIterator
 {
 public:
+    // iterator traits
+    using iterator_category = std::input_iterator_tag;
+    using value_type = char;
+    using difference_type = std::ptrdiff_t;
+    using pointer = char*;
+    using reference = char&;
+
     friend class SBuf;
     typedef MemBlob::size_type size_type;
     bool operator==(const SBufIterator &s) const;