summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/kernel/qmetatype.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index 06adf7cffd..986d22b5a6 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -783,6 +783,10 @@ struct IteratorOwner
{
*ptr = new const_iterator(iterator);
}
+ static void assign(void **ptr, void * const * src)
+ {
+ *ptr = new const_iterator(*static_cast<const_iterator*>(*src));
+ }
static void advance(void **iterator, int step)
{
@@ -812,6 +816,10 @@ struct IteratorOwner<const value_type*>
{
*ptr = const_cast<value_type*>(iterator);
}
+ static void assign(void **ptr, void * const * src)
+ {
+ *ptr = static_cast<value_type*>(*src);
+ }
static void advance(void **iterator, int step)
{
@@ -942,7 +950,7 @@ public:
template<class T>
static void copyIterImpl(void **dest, void * const * src)
- { IteratorOwner<typename T::const_iterator>::assign(dest, *static_cast<typename T::const_iterator*>(*src)); }
+ { IteratorOwner<typename T::const_iterator>::assign(dest, src); }
public:
template<class T> QSequentialIterableImpl(const T*p)
@@ -1122,7 +1130,7 @@ public:
template<class T>
static void copyIterImpl(void **dest, void * const * src)
- { IteratorOwner<typename T::const_iterator>::assign(dest, *static_cast<typename T::const_iterator*>(*src)); }
+ { IteratorOwner<typename T::const_iterator>::assign(dest, src); }
public:
template<class T> QAssociativeIterableImpl(const T*p)