Fixed static assert in qvariant template magic
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>
Tue, 3 Jan 2012 16:05:49 +0000 (17:05 +0100)
committerQt by Nokia <qt-info@nokia.com>
Tue, 3 Jan 2012 23:32:44 +0000 (00:32 +0100)
CallConstructor<T, /* CanUseInternalSpace = */ false> is called when we need to
construct an object that couldn't be fit in qvariantdata, meaning either it is
not a POD type (Q_PRIMITIVE_TYPE), or it is simply too large to fit there.

Change-Id: Ied122b4a6f600e14312a8d515f5b3e91214a94f1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
src/corelib/kernel/qvariant_p.h

index f7f1399..a90164f 100644 (file)
@@ -327,7 +327,7 @@ class QVariantConstructor
     {
         CallConstructor(const QVariantConstructor &tc)
         {
-            Q_STATIC_ASSERT(QTypeInfo<T>::isComplex);
+            Q_STATIC_ASSERT(QTypeInfo<T>::isComplex || sizeof(T) > sizeof(QVariant::Private::Data));
             tc.m_x->data.shared = tc.m_copy ? new QVariantPrivateSharedEx<T>(*static_cast<const T*>(tc.m_copy))
                                       : new QVariantPrivateSharedEx<T>;
             tc.m_x->is_shared = true;