util/IntrusiveList: do not use the deprecated class std::iterator

Deprecated in C++17.  Since C++17, one is supposed to declare those 5
types manually.
This commit is contained in:
Max Kellermann 2021-07-19 11:03:44 +02:00 committed by Max Kellermann
parent 4dae8b41da
commit 1c97793b49

View File

@ -235,9 +235,7 @@ public:
class const_iterator;
class iterator final
: public std::iterator<std::forward_iterator_tag, T> {
class iterator final {
friend IntrusiveList;
friend const_iterator;
@ -247,6 +245,12 @@ public:
:cursor(_cursor) {}
public:
using iterator_category = std::forward_iterator_tag;
using value_type = T;
using difference_type = std::ptrdiff_t;
using pointer = value_type *;
using reference = value_type &;
iterator() noexcept = default;
constexpr bool operator==(const iterator &other) const noexcept {
@ -283,9 +287,7 @@ public:
return {&ToNode(t)};
}
class const_iterator final
: public std::iterator<std::forward_iterator_tag, const T> {
class const_iterator final {
friend IntrusiveList;
const IntrusiveListNode *cursor;
@ -294,6 +296,12 @@ public:
:cursor(_cursor) {}
public:
using iterator_category = std::forward_iterator_tag;
using value_type = const T;
using difference_type = std::ptrdiff_t;
using pointer = value_type *;
using reference = value_type &;
const_iterator() noexcept = default;
const_iterator(iterator src) noexcept