summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-02-27 13:20:57 +0100
committerLars Knoll <lars.knoll@qt.io>2020-02-28 10:07:01 +0100
commitc946b07d9c2023c56ec3cae3ef8a425d12f8d7df (patch)
tree429b362f182f209d6070dc3db6cbd891a6f823d3 /src
parent9f041c4f3bcbbbecc4e462e911cae891ffcd8e74 (diff)
STL compatibility: erase() should take a const_iterator as argument
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 <marten.nordheim@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/tools/qvector.h13
1 files 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<T>::emplace(int i, Args&&... args)
}
template <typename T>
-typename QVector<T>::iterator QVector<T>::erase(iterator abegin, iterator aend)
+typename QVector<T>::iterator QVector<T>::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);