diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-02-28 15:27:53 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-03-25 17:55:28 +0100 |
commit | 98ca31981977c5a265bb745cc70aafd17384d346 (patch) | |
tree | a6b88c7e4aa0a284f9f15f8efdf512ea9e9e715e /src/corelib/kernel/qmetatype.h | |
parent | b6446a5ffac55477d82da0492a9a41ce788275d5 (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.h | 5 |
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) { |