summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetatype.h
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-02-28 15:27:53 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2020-03-25 17:55:28 +0100
commit98ca31981977c5a265bb745cc70aafd17384d346 (patch)
treea6b88c7e4aa0a284f9f15f8efdf512ea9e9e715e /src/corelib/kernel/qmetatype.h
parentb6446a5ffac55477d82da0492a9a41ce788275d5 (diff)
QMetaType::fromType: support classes with inaccessible dtors
Change-Id: I60a1b2496d48651a8166173b420da37f59d7a395 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/kernel/qmetatype.h')
-rw-r--r--src/corelib/kernel/qmetatype.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index 0bec7ca4c0..1ae0fb45bc 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -2719,7 +2719,10 @@ QMetaTypeInterface QMetaTypeForType<T>::metaType = {
}
}),
/*.dtor=*/ QT_METATYPE_CONSTEXPRLAMDA( -> QMetaTypeInterface::DtorFn {
- return [](const QMetaTypeInterface *, void *addr) { reinterpret_cast<T *>(addr)->~T(); };
+ if constexpr (std::is_destructible_v<T>)
+ return [](const QMetaTypeInterface *, void *addr) { reinterpret_cast<T *>(addr)->~T(); };
+ else
+ return nullptr;
}),
/*.legacyRegisterOp=*/ QT_METATYPE_CONSTEXPRLAMDA( -> QMetaTypeInterface::LegacyRegisterOp {
if constexpr (QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn) {