diff options
| author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2024-01-22 13:41:02 +0100 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2024-01-24 00:26:37 +0000 |
| commit | 100071af82963e712cb055e5d98795376d89e65c (patch) | |
| tree | 727c763a565242097bba53cc70111dd4b7701266 /src/corelib/kernel/qjniarray.h | |
| parent | b820aa7a04be0308b00c32b0e884421fbbb89269 (diff) | |
QJniArray: fix const_iterator declaration, make it default-constructible
Iterators are required to be default-constructible and
value-initialized iterators must compare equal.
In a const_iterator, the pointee should be const, not
the iterator itself.
Found during header review.
Pick-to: 6.7
Task-number: QTBUG-119952
Change-Id: I036c0a62ade8c59dc5d62c0823b375223719af3f
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/corelib/kernel/qjniarray.h')
| -rw-r--r-- | src/corelib/kernel/qjniarray.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/corelib/kernel/qjniarray.h b/src/corelib/kernel/qjniarray.h index a448b68d4bc..66688c393d1 100644 --- a/src/corelib/kernel/qjniarray.h +++ b/src/corelib/kernel/qjniarray.h @@ -19,6 +19,8 @@ template <typename T> class QJniArray; template <typename T> struct QJniArrayIterator { + QJniArrayIterator() = default; + constexpr QJniArrayIterator(const QJniArrayIterator &other) noexcept = default; constexpr QJniArrayIterator(QJniArrayIterator &&other) noexcept = default; constexpr QJniArrayIterator &operator=(const QJniArrayIterator &other) noexcept = default; @@ -49,13 +51,13 @@ struct QJniArrayIterator } private: - friend class QJniArray<T>; + using VT = std::remove_const_t<T>; + friend class QJniArray<VT>; qsizetype m_index = 0; - const QJniArray<T> *m_array = nullptr; + const QJniArray<VT> *m_array = nullptr; - QJniArrayIterator() = delete; - QJniArrayIterator(qsizetype index, const QJniArray<T> *array) + QJniArrayIterator(qsizetype index, const QJniArray<VT> *array) : m_index(index), m_array(array) {} }; @@ -154,7 +156,7 @@ class QJniArray : public QJniArrayBase friend struct QJniArrayIterator<T>; public: using Type = T; - using const_iterator = const QJniArrayIterator<T>; + using const_iterator = QJniArrayIterator<const T>; QJniArray() = default; explicit QJniArray(jarray array) : QJniArrayBase(array) {} |
