summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2024-01-22 13:41:02 +0100
committerMarc Mutz <marc.mutz@qt.io>2024-01-24 00:26:37 +0000
commit100071af82963e712cb055e5d98795376d89e65c (patch)
tree727c763a565242097bba53cc70111dd4b7701266 /src
parentb820aa7a04be0308b00c32b0e884421fbbb89269 (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')
-rw-r--r--src/corelib/kernel/qjniarray.h12
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) {}