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; }