diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 8c3a27e3ca3..b7d347a61e4 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -392,7 +392,12 @@ class Q_CORE_EXPORT QVariant } template +#ifndef Q_CLANG_QDOC + static inline auto fromValue(const T &value) -> + std::enable_if_t, QVariant> +#else static inline QVariant fromValue(const T &value) +#endif { return QVariant(QMetaType::fromType(), std::addressof(value)); } diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 6b30419bb83..23ee85ee46d 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -68,6 +68,21 @@ class CustomNonQObject; +template +struct QVariantFromValueCompiles +{ + static inline constexpr bool value = false; +}; + +template +struct QVariantFromValueCompiles()))>> +{ + static inline constexpr bool value = true; +}; + +static_assert(QVariantFromValueCompiles::value); +static_assert(!QVariantFromValueCompiles::value); + class tst_QVariant : public QObject { Q_OBJECT