From c946b07d9c2023c56ec3cae3ef8a425d12f8d7df Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 27 Feb 2020 13:20:57 +0100 Subject: STL compatibility: erase() should take a const_iterator as argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit erase() takes a const_iterator as argument in std::vector. We should do the same to facility better interoperatbility. Fixes: QTBUG-81915 Change-Id: I60ffb0eb45955be8e3e6aeaa56998f7c668fed09 Reviewed-by: MÃ¥rten Nordheim --- src/corelib/tools/qvector.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 2cfcb2e5dc..026f99fd09 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -371,8 +371,8 @@ public: const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } - iterator erase(iterator begin, iterator end); - inline iterator erase(iterator pos) { return erase(pos, pos+1); } + iterator erase(const_iterator begin, const_iterator end); + inline iterator erase(const_iterator pos) { return erase(pos, pos+1); } // more Qt inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); } @@ -626,14 +626,13 @@ QVector::emplace(int i, Args&&... args) } template -typename QVector::iterator QVector::erase(iterator abegin, iterator aend) +typename QVector::iterator QVector::erase(const_iterator abegin, const_iterator aend) { - Q_ASSERT_X(isValidIterator(const_iterator(abegin)), "QVector::erase", "The specified iterator argument 'abegin' is invalid"); - Q_ASSERT_X(isValidIterator(const_iterator(aend)), "QVector::erase", "The specified iterator argument 'aend' is invalid"); + Q_ASSERT_X(isValidIterator(abegin), "QVector::erase", "The specified iterator argument 'abegin' is invalid"); + Q_ASSERT_X(isValidIterator(aend), "QVector::erase", "The specified iterator argument 'aend' is invalid"); Q_ASSERT(aend >= abegin); - // d.begin() so we don't detach just yet - int i = std::distance(d.begin(), abegin); + int i = std::distance(d.constBegin(), abegin); int n = std::distance(abegin, aend); remove(i, n); -- cgit v1.2.3