]> 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)
committerSquid Anubis <squid-anubis@squid-cache.org>
Wed, 8 Jun 2022 12:12:37 +0000 (12:12 +0000)
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 7373120b3d6e9a1832be8df049b9b0e0a8aa9975..533bba96b648bdb2dcd6a6894e223069c3986ea2 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;