refs #247 Enabled equality comparison between CVariant and CValueObject.

This commit is contained in:
Mathew Sutcliffe
2014-12-06 15:58:41 +00:00
parent befa5892a5
commit 4007f34e22

View File

@@ -205,6 +205,35 @@ namespace BlackMisc
const void *data() const { return m_v.data(); }
};
//! Compare stored value of CVariant with any CValueObject derived class.
template <class T, class = typename std::enable_if<std::is_base_of<CValueObject, T>::value>::type>
bool operator ==(const T &value, const CVariant &variant)
{
if (variant.canConvert<T>()) { return variant.value<T>() == value; }
return false;
}
//! Compare stored value of CVariant with any CValueObject derived class.
template <class T, class = typename std::enable_if<std::is_base_of<CValueObject, T>::value>::type>
bool operator !=(const T &value, const CVariant &variant)
{
return !(value == variant);
}
//! Compare stored value of CVariant with any CValueObject derived class.
template <class T, class = typename std::enable_if<std::is_base_of<CValueObject, T>::value>::type>
bool operator ==(const CVariant &variant, const T &value)
{
return value == variant;
}
//! Compare stored value of CVariant with any CValueObject derived class.
template <class T, class = typename std::enable_if<std::is_base_of<CValueObject, T>::value>::type>
bool operator !=(const CVariant &variant, const T &value)
{
return !(value == variant);
}
} // namespace
Q_DECLARE_METATYPE(BlackMisc::CVariant)