diff options
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 3 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 61ea0dd8e7..aee2e757db 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -250,7 +250,8 @@ static void customConstruct(const QtPrivate::QMetaTypeInterface *iface, QVariant // need to check for nullptr_t here, as this can get called by fromValue(nullptr). fromValue() uses // std::addressof(value) which in this case returns the address of the nullptr object. - d->is_null = !copy || isInterfaceFor<std::nullptr_t>(iface); + // ### Qt 7: remove nullptr_t special casing + d->is_null = !copy QT6_ONLY(|| isInterfaceFor<std::nullptr_t>(iface)); void *dst; if (QVariant::Private::canUseInternalSpace(iface)) { diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 73b7e97792..8f14612bcc 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -435,6 +435,8 @@ public: static inline QVariant fromValue(const T &value) #endif { + if constexpr (std::is_null_pointer_v<T>) + return QVariant(QMetaType::fromType<std::nullptr_t>()); return QVariant(QMetaType::fromType<T>(), std::addressof(value)); } |