]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os: define iterator without std::iterator<>
authorKefu Chai <tchaikov@gmail.com>
Mon, 28 Feb 2022 15:00:04 +0000 (23:00 +0800)
committerKefu Chai <tchaikov@gmail.com>
Tue, 1 Mar 2022 16:29:28 +0000 (00:29 +0800)
std::iterator<> is deprecated in C++17, so let's just
define the required traits directly.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/crimson/os/seastore/omap_manager/btree/string_kv_node_layout.h

index 9948a4292fd985c4876641d2d768c328728f57b4..1bd95415a48a1e6f7563c8d60999f3ea8c86d52d 100644 (file)
@@ -294,7 +294,7 @@ class StringKVInnerNodeLayout {
   friend class delta_inner_t;
 public:
   template <bool is_const>
-  class iter_t : public std::iterator<std::input_iterator_tag, StringKVInnerNodeLayout> {
+  class iter_t {
     friend class StringKVInnerNodeLayout;
 
     template <typename iterator, typename const_iterator>
@@ -312,6 +312,12 @@ public:
       uint16_t index) : node(parent), index(index) {}
 
   public:
+    using iterator_category = std::input_iterator_tag;
+    using value_type = StringKVInnerNodeLayout;
+    using difference_type = std::ptrdiff_t;
+    using pointer = StringKVInnerNodeLayout*;
+    using reference = iter_t&;
+
     iter_t(const iter_t &) = default;
     iter_t(iter_t &&) = default;
     iter_t &operator=(const iter_t &) = default;
@@ -322,7 +328,6 @@ public:
       return iter_t<!is_const>(node, index);
     }
 
-    using reference = iter_t&;
     iter_t &operator*() { return *this; }
     iter_t *operator->() { return this; }