Fix usage of std::enable_if_t to SFINAE out QProperty APIs
Declare an IfUntypedPropertyData alias and use that consistently. Amends 311f8896322bcd39d33369c8311a8c89ccdad449. Change-Id: If36ef8e2f9ce25e0ffe7b4b448c31ea5866acfc3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 216af5d7f9675a408e22167b097f221beeeb88db) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
78e2a49a48
commit
bd179a8d2f
@ -263,8 +263,7 @@ public:
|
|||||||
QPropertyObserver &operator=(QPropertyObserver &&other) noexcept;
|
QPropertyObserver &operator=(QPropertyObserver &&other) noexcept;
|
||||||
~QPropertyObserver();
|
~QPropertyObserver();
|
||||||
|
|
||||||
template <typename Property,
|
template <typename Property, QtPrivate::IsUntypedPropertyData<Property> = true>
|
||||||
typename = std::enable_if_t<std::is_base_of_v<QUntypedPropertyData, Property>>>
|
|
||||||
void setSource(const Property &property)
|
void setSource(const Property &property)
|
||||||
{ setSource(property.bindingData()); }
|
{ setSource(property.bindingData()); }
|
||||||
void setSource(const QtPrivate::QPropertyBindingData &property);
|
void setSource(const QtPrivate::QPropertyBindingData &property);
|
||||||
@ -303,8 +302,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Property,
|
template <typename Property, QtPrivate::IsUntypedPropertyData<Property> = true>
|
||||||
typename = std::enable_if_t<std::is_base_of_v<QUntypedPropertyData, Property>>>
|
|
||||||
Q_NODISCARD_CTOR
|
Q_NODISCARD_CTOR
|
||||||
QPropertyChangeHandler(const Property &property, Functor handler)
|
QPropertyChangeHandler(const Property &property, Functor handler)
|
||||||
: QPropertyObserver([](QPropertyObserver *self, QUntypedPropertyData *) {
|
: QPropertyObserver([](QPropertyObserver *self, QUntypedPropertyData *) {
|
||||||
@ -335,7 +333,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename Functor, typename Property,
|
template <typename Functor, typename Property,
|
||||||
typename = std::enable_if_t<std::is_base_of_v<QUntypedPropertyData, Property>>>
|
QtPrivate::IsUntypedPropertyData<Property> = true>
|
||||||
Q_NODISCARD_CTOR
|
Q_NODISCARD_CTOR
|
||||||
QPropertyNotifier(const Property &property, Functor handler)
|
QPropertyNotifier(const Property &property, Functor handler)
|
||||||
: QPropertyObserver([](QPropertyObserver *self, QUntypedPropertyData *) {
|
: QPropertyObserver([](QPropertyObserver *self, QUntypedPropertyData *) {
|
||||||
@ -909,8 +907,7 @@ public:
|
|||||||
iface->setObserver(aliasedProperty(), this);
|
iface->setObserver(aliasedProperty(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Property,
|
template <typename Property, QtPrivate::IsUntypedPropertyData<Property> = true>
|
||||||
typename = std::enable_if_t<std::is_base_of_v<QUntypedPropertyData, Property>>>
|
|
||||||
QPropertyAlias(Property *property)
|
QPropertyAlias(Property *property)
|
||||||
: QPropertyObserver(property),
|
: QPropertyObserver(property),
|
||||||
iface(&QtPrivate::QBindableInterfaceForProperty<Property>::iface)
|
iface(&QtPrivate::QBindableInterfaceForProperty<Property>::iface)
|
||||||
|
@ -124,16 +124,13 @@ struct QPropertyObserverPointer;
|
|||||||
|
|
||||||
class QUntypedPropertyData
|
class QUntypedPropertyData
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
#if QT_DEPRECATED_SINCE(6, 8)
|
|
||||||
// sentinel to check whether a class inherits QUntypedPropertyData
|
|
||||||
struct QT_DEPRECATED_VERSION_X_6_8("Use std::is_base_of instead.")
|
|
||||||
InheritsQUntypedPropertyData
|
|
||||||
{
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace QtPrivate {
|
||||||
|
template <typename T>
|
||||||
|
using IsUntypedPropertyData = std::enable_if_t<std::is_base_of_v<QUntypedPropertyData, T>, bool>;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class QPropertyData;
|
class QPropertyData;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user