summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qarraydataops.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qarraydataops.h')
-rw-r--r--src/corelib/tools/qarraydataops.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h
index 173e3cac2e8..9570ab28b8a 100644
--- a/src/corelib/tools/qarraydataops.h
+++ b/src/corelib/tools/qarraydataops.h
@@ -912,10 +912,17 @@ public:
Q_UNUSED(distance);
#if __cplusplus >= 202002L
- if constexpr (
- std::is_convertible_v<
+ constexpr bool canUseCopyAppend = std::conjunction_v<
+ std::is_convertible<
typename std::iterator_traits<It>::iterator_category,
- std::contiguous_iterator_tag>) {
+ std::contiguous_iterator_tag
+ >,
+ std::is_same<
+ std::remove_cv_t<typename std::iterator_traits<It>::value_type>,
+ T
+ >
+ >;
+ if constexpr (canUseCopyAppend) {
this->copyAppend(std::to_address(b), std::to_address(e));
} else
#endif