From 93bf99f6396a34ec39c15c8580ba20e6e4f00faf Mon Sep 17 00:00:00 2001 From: gd Date: Wed, 29 Jan 2025 15:52:19 +0200 Subject: [PATCH] util/DereferenceIterator, TerminatedArray: added operator-(const IteratorType&) to DereferenceIterator and TerminatedArray::iterator It is required by std::distance and some std algos. --- src/util/DereferenceIterator.hxx | 4 ++++ src/util/TerminatedArray.hxx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/util/DereferenceIterator.hxx b/src/util/DereferenceIterator.hxx index 4d21cd998..c40ea55fe 100644 --- a/src/util/DereferenceIterator.hxx +++ b/src/util/DereferenceIterator.hxx @@ -82,6 +82,10 @@ public: return DereferenceIterator{original - n}; } + constexpr auto operator-(const DereferenceIterator& other) const noexcept { + return std::distance(other.original, original); + } + /* this is a template to allow comparisons with sentinel end iterators */ template diff --git a/src/util/TerminatedArray.hxx b/src/util/TerminatedArray.hxx index b0d361f66..38d40c9ee 100644 --- a/src/util/TerminatedArray.hxx +++ b/src/util/TerminatedArray.hxx @@ -101,6 +101,10 @@ public: return iterator{cursor - n}; } + constexpr auto operator-(const iterator& other) const noexcept { + return std::distance(other.cursor, cursor); + } + reference operator*() const noexcept { return *cursor; }