GitHub's windows-latest image now ships VS 17.12+, whose STL removed
stdext::(un)checked_array_iterator; Qt 5.15.2's qcompilerdetection.h
still expands QT_MAKE_CHECKED_ARRAY_ITERATOR to it, breaking the build
inside Qt's own headers (QTBUG-118993). Rewrite the two defines to the
portable raw-pointer fallback after installing Qt. Also disable
fail-fast so the Qt 6 leg isn't cancelled by a 5.15 failure.
A Q_INVOKABLE returning a QVariant holding a QObject* makes the object
destructible by the JS GC (qv4qobjectwrapper transfers ownership unless
explicitly set). ModelQuery::get(model, row, roleName) returns nested
submodels (e.g. QQmlListModel's cached nested models) this way; the GC
could delete them while the source model still owns them, causing a
double-free/UAF in ListModel::destroy() on model teardown.
The right model data access is expensive because we need to search the right model for a matching key on every `data` call. This commit adds a LRU cache to the `data` call, storing by default up to 1000 rows.
The cache mechanism uses a QCache for fast index lookup and a std::list to preserve the access order and to ensure a controlled cache removal.
+ fix compilation errors on ConcatModel and WritableProxyModel
- proper handling of source models reset (left and right)
- removed QQmlParserStatus inheritance
- emiting model reset only if needed to simplify upstream models
initialization