summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2025-12-01 13:12:13 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2025-12-01 18:19:30 +0100
commitd6549f4781ea7d0023cf5b1b47d5b7f3139c9e0e (patch)
tree9fca067d03fda67c54877743912c295f08dd786a
parentde630e84cc0baf9db6a404823e2c4e39c67c05f2 (diff)
QRM: Only detect rotate if the iterator models at least forward_iterator
Amends dc2521c156fb694f379104191e540a57371b41f0 Change-Id: I2a1e7da5aa5b7015ced25fcc49c1e66275db4bc8 Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
-rw-r--r--src/corelib/itemmodels/qrangemodel_impl.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h
index 55c7930cc36..5ad7dd08059 100644
--- a/src/corelib/itemmodels/qrangemodel_impl.h
+++ b/src/corelib/itemmodels/qrangemodel_impl.h
@@ -238,14 +238,16 @@ namespace QRangeModelDetails
: std::true_type
{};
- // we use std::rotate in moveRows/Columns, which requires std::swap
+ // we use std::rotate in moveRows/Columns, which requires std::swap and the
+ // iterators to be at least a forward iterator
template <typename It, typename = void>
struct test_rotate : std::false_type {};
template <typename It>
struct test_rotate<It, std::void_t<decltype(std::swap(*std::declval<It>(),
*std::declval<It>()))>>
- : std::true_type
+ : std::is_base_of<std::forward_iterator_tag,
+ typename std::iterator_traits<It>::iterator_category>
{};
template <typename C, typename = void>