diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-11-10 14:57:04 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-01-25 17:05:18 +0000 |
commit | f823af43f243b1848fd4a838847317d0ff6d4fdf (patch) | |
tree | 0e1b681700b86d8674e7f0e850bd77165e018641 /src/corelib/kernel/qvariant_p.h | |
parent | 374a173d1417a9f8c313088420cb1b792fe45977 (diff) |
QVariant of nullptr should always be null
Implements isNull for QVariants of a nullptr so they always return
true to isNull(), instead of depending on how they were constructed.
Task-number: QTBUG-58296
Change-Id: Ibddec795cdadedef7e17d22c265c29e752d8f99f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib/kernel/qvariant_p.h')
-rw-r--r-- | src/corelib/kernel/qvariant_p.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h index bf88def438..487949431c 100644 --- a/src/corelib/kernel/qvariant_p.h +++ b/src/corelib/kernel/qvariant_p.h @@ -177,6 +177,26 @@ inline void v_clear(QVariant::Private *d, T* = 0) } +template <typename T> +struct PrimitiveIsNull +{ +public: + static bool isNull(const QVariant::Private *d) + { + return d->is_null; + } +}; + +template <> +struct PrimitiveIsNull<std::nullptr_t> +{ +public: + static bool isNull(const QVariant::Private *) + { + return true; + } +}; + template<class Filter> class QVariantComparator { template<typename T, bool IsAcceptedType = Filter::template Acceptor<T>::IsAccepted> @@ -268,7 +288,7 @@ class QVariantIsNull { static bool isNull(const QVariant::Private *d) { - return d->is_null; + return PrimitiveIsNull<T>::isNull(d); } }; |