Variant#
Fully qualified name: carb::variant::Variant
Defined in carb/variant/VariantUtils.h
-
class Variant : protected carb::variant::VariantData#
A wrapper class for managing the lifetime of VariantData and converting the contained value to C++ types.
Public Functions
-
Variant() noexcept#
Default constructor.
Produces an empty Variant, that is, hasValue() will return
false
. Any attempt to getValue() will fail and convertTo() will produce an empty Variant. Empty Variants are only equal to other empty Variants.
-
template<class T>
inline explicit Variant(T &&val) noexcept# Construct based on given type.
To allow copy/move constructors to work properly, this constructor participates in overload resolution only if
T
is not Variant.Warning
This function will fail to compile if a Translator cannot be found for
T
.- Parameters:
val – The value to store in the variant.
-
~Variant() noexcept#
Destructor.
-
Variant &operator=(const Variant &other) noexcept#
Copy-assign operator.
- Parameters:
other – The Variant to copy.
- Returns:
*this
-
Variant(Variant &&other) noexcept#
Move constructor.
- Parameters:
other – The Variant to move from.
other
is left in an empty state.
-
Variant &operator=(Variant &&other) noexcept#
Move-assign operator.
- Parameters:
other – The Variant to move from.
- Returns:
*this
-
bool operator==(const Variant &other) const noexcept#
Tests for equality between two variants.
- Parameters:
other – The other Variant.
- Returns:
true
if the Variants are equal;false
otherwise.
-
bool operator!=(const Variant &other) const noexcept#
Tests for inequality between two variants.
- Parameters:
other – The other Variant.
- Returns:
true
if the Variants are not equal;false
otherwise.
-
bool hasValue() const noexcept#
Tests if a Variant is empty (i.e.
contains no value).
- Returns:
true
if the Variant is empty;false
otherwise.
-
omni::string toString() const noexcept#
Renders the Variant as a string for debugging purposes.
- Returns:
The string value of the variant.
-
size_t getHash() const noexcept#
Obtains the hash value of the variant.
- Returns:
The hash value of the variant.
-
template<class T>
cpp::optional<T> getValue() const noexcept# Attempts to convert the Variant to the given type.
- Returns:
A
optional
containing the requested value if conversion succeeds; an emptyoptional
otherwise.
-
template<class T>
T getValueOr(T fallback) const noexcept# Attempts to convert the Variant to the given type with a fallback value if conversion fails.
- Parameters:
fallback – The default value to return if conversion fails.
- Returns:
The contained value if conversion succeeds, or
fallback
if conversion fails.
-
template<class T>
Variant convertTo() const noexcept# Attempts to convert to a Variant of a different type.
-
inline const VariantData &data() const noexcept#
Access the underlying VariantData.
- Returns:
The underlying VariantData.
-
Variant() noexcept#