diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-07-16 09:38:09 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-07-27 14:51:44 -0700 |
commit | 7211771c64caad7880212b1a35d4a6070800c0fa (patch) | |
tree | c6ebb6fd9aab2ff9900ecce01f460995859dc770 /src/corelib/kernel/qmetatype.h | |
parent | 6b3c6155e9dfc6a3ee32b4ced4a117ec570d7563 (diff) |
QMetaType: move is_complete template further up
Alongside the rest, makes the code better organized.
Pick-to: 6.4
Change-Id: I36b24183fbd041179f2ffffd17025ca7fe988a5a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel/qmetatype.h')
-rw-r--r-- | src/corelib/kernel/qmetatype.h | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 7a66767258..18d59e1298 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -831,6 +831,20 @@ QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(QT_FORWARD_DECLARE_SHARED_POINTER_T namespace QtPrivate { + namespace detail { + template<typename T, typename ODR_VIOLATION_PREVENTER> + struct is_complete_helper + { + template<typename U> + static auto check(U *) -> std::integral_constant<bool, sizeof(U) != 0>; + static auto check(...) -> std::false_type; + using type = decltype(check(static_cast<T *>(nullptr))); + }; + } // namespace detail + + template <typename T, typename ODR_VIOLATION_PREVENTER> + struct is_complete : detail::is_complete_helper<T, ODR_VIOLATION_PREVENTER>::type {}; + template<typename T> struct IsPointerToTypeDerivedFromQObject { @@ -2464,7 +2478,6 @@ QT_FOR_EACH_STATIC_CORE_POINTER(QT_METATYPE_DECLARE_EXTERN_TEMPLATE_ITER) QT_FOR_EACH_STATIC_CORE_TEMPLATE(QT_METATYPE_DECLARE_EXTERN_TEMPLATE_ITER) #undef QT_METATYPE_DECLARE_EXTERN_TEMPLATE_ITER #endif - template<typename T> constexpr const QMetaTypeInterface *qMetaTypeInterfaceForType() { @@ -2472,20 +2485,6 @@ constexpr const QMetaTypeInterface *qMetaTypeInterfaceForType() return &QMetaTypeInterfaceWrapper<Ty>::metaType; } -namespace detail { -template<typename T, typename ODR_VIOLATION_PREVENTER> -struct is_complete_helper -{ - template<typename U> - static auto check(U *) -> std::integral_constant<bool, sizeof(U) != 0>; - static auto check(...) -> std::false_type; - using type = decltype(check(static_cast<T *>(nullptr))); -}; -} // namespace detail - -template <typename T, typename ODR_VIOLATION_PREVENTER> -struct is_complete : detail::is_complete_helper<T, ODR_VIOLATION_PREVENTER>::type {}; - template<typename T> struct qRemovePointerLike { |