diff options
Diffstat (limited to 'src/corelib')
| -rw-r--r-- | src/corelib/itemmodels/qrangemodel_impl.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h index 55c7930cc36..96dacda0260 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> @@ -512,8 +514,12 @@ namespace QRangeModelDetails using row_type = typename range_traits<QRangeModelDetails::wrapped_t<Range>>::value_type; template <typename R = row_type, - std::enable_if_t<std::conjunction_v<std::is_destructible<wrapped_t<R>>, - is_owning_or_raw_pointer<R>>, bool> = true> + std::enable_if_t< + std::conjunction_v< + std::is_destructible<QRangeModelDetails::wrapped_t<R>>, + is_owning_or_raw_pointer<R> + >, + bool> = true> auto newRow() -> decltype(R(new QRangeModelDetails::wrapped_t<R>)) { if constexpr (is_any_of<R, std::shared_ptr>()) return std::make_shared<QRangeModelDetails::wrapped_t<R>>(); @@ -587,7 +593,7 @@ namespace QRangeModelDetails template <typename P, typename R> using protocol_mutable_childRows_test = decltype(refTo(std::declval<P&>() - .childRows(std::declval<wrapped_t<R>&>())) = {}); + .childRows(std::declval<QRangeModelDetails::wrapped_t<R>&>())) = {}); template <typename P, typename R> using protocol_mutable_childRows = qxp::is_detected<protocol_mutable_childRows_test, P, R>; |
