Skip to content

Commit 49c6b62

Browse files
authored
DPL: do not inherit from std::iterator (#8367)
Now formally deprecated in clang
1 parent 4df45b9 commit 49c6b62

2 files changed

Lines changed: 12 additions & 14 deletions

File tree

Framework/Core/include/Framework/InputRecord.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -493,18 +493,17 @@ class InputRecord
493493
/// incomplete records to be consumed or processed.
494494
[[nodiscard]] size_t countValidInputs() const;
495495

496-
template <typename T>
497-
using IteratorBase = std::iterator<std::forward_iterator_tag, T>;
498-
499496
template <typename ParentT, typename T>
500-
class Iterator : public IteratorBase<T>
497+
class Iterator
501498
{
502499
public:
503500
using ParentType = ParentT;
504501
using SelfType = Iterator;
505-
using value_type = typename IteratorBase<T>::value_type;
506-
using reference = typename IteratorBase<T>::reference;
507-
using pointer = typename IteratorBase<T>::pointer;
502+
using iterator_category = std::forward_iterator_tag;
503+
using value_type = T;
504+
using reference = T&;
505+
using pointer = T*;
506+
using difference_type = std::ptrdiff_t;
508507
using ElementType = typename std::remove_const<value_type>::type;
509508

510509
Iterator() = delete;

Framework/Core/include/Framework/InputSpan.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,18 @@ class InputSpan
8282
return get(i).payload;
8383
}
8484

85-
template <typename T>
86-
using IteratorBase = std::iterator<std::forward_iterator_tag, T>;
87-
8885
/// an iterator class working on position within the a parent class
8986
template <typename ParentT, typename T>
90-
class Iterator : public IteratorBase<T>
87+
class Iterator
9188
{
9289
public:
9390
using ParentType = ParentT;
9491
using SelfType = Iterator;
95-
using value_type = typename IteratorBase<T>::value_type;
96-
using reference = typename IteratorBase<T>::reference;
97-
using pointer = typename IteratorBase<T>::pointer;
92+
using iterator_category = std::forward_iterator_tag;
93+
using value_type = T;
94+
using reference = T&;
95+
using pointer = T*;
96+
using difference_type = std::ptrdiff_t;
9897
using ElementType = typename std::remove_const<value_type>::type;
9998

10099
Iterator() = delete;

0 commit comments

Comments
 (0)