diff --git a/src/util/IntrusiveList.hxx b/src/util/IntrusiveList.hxx
index b149d1e69..edadd23f1 100644
--- a/src/util/IntrusiveList.hxx
+++ b/src/util/IntrusiveList.hxx
@@ -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