Added support for enums in as<T>() and is<T>() (fixes #1256)

This commit is contained in:
Benoit Blanchon
2020-05-04 09:09:57 +02:00
parent dcf7eeef28
commit 3bb0a7aa8e
5 changed files with 24 additions and 0 deletions

View File

@ -57,6 +57,12 @@ inline typename enable_if<is_integral<T>::value, T>::type variantAs(
return data != 0 ? data->asIntegral<T>() : T(0);
}
template <typename T>
inline typename enable_if<is_enum<T>::value, T>::type variantAs(
const VariantData* data) {
return data != 0 ? static_cast<T>(data->asIntegral<int>()) : T();
}
template <typename T>
inline typename enable_if<is_same<T, bool>::value, T>::type variantAs(
const VariantData* data) {

View File

@ -101,6 +101,11 @@ class VariantRefBase {
return variantIsNull(_data);
}
#endif
// bool is<enum>() const;
template <typename T>
FORCE_INLINE typename enable_if<is_enum<T>::value, bool>::type is() const {
return variantIsInteger<int>(_data);
}
FORCE_INLINE bool isNull() const {
return variantIsNull(_data);