Fixed invalid result from operator| (closes #981)

This commit is contained in:
Benoit Blanchon
2019-05-07 08:12:18 +02:00
parent 0588e578d5
commit eaf55e174b
3 changed files with 36 additions and 15 deletions

View File

@ -15,8 +15,7 @@ class VariantOr {
public:
// Returns the default value if the VariantRef is undefined of incompatible
template <typename T>
typename enable_if<!is_integral<T>::value, T>::type operator|(
const T &defaultValue) const {
T operator|(const T &defaultValue) const {
if (impl()->template is<T>())
return impl()->template as<T>();
else
@ -30,17 +29,6 @@ class VariantOr {
return value ? value : defaultValue;
}
// Returns the default value if the VariantRef is undefined of incompatible
// Special case for integers: we also accept double
template <typename Integer>
typename enable_if<is_integral<Integer>::value, Integer>::type operator|(
const Integer &defaultValue) const {
if (impl()->template is<double>())
return impl()->template as<Integer>();
else
return defaultValue;
}
private:
const TImpl *impl() const {
return static_cast<const TImpl *>(this);