13template <
typename T>
class Optional;
72 explicit operator bool()
const {
return !
empty(); }
81 return *
ptr() == *other.
ptr();
90 return *
ptr() == value;
102 template <
typename TT,
typename UU>
104 if (!other.template holdsTypeOf<T>()) {
113 return *
ptr() == *other.template
ptr<T>();
117 if (
this != &other) {
bool operator==(const Optional &other) const
Optional & operator=(const T &value)
Optional & operator=(nullopt_t)
bool operator!=(nullopt_t) const
Optional(Optional &&other) noexcept
bool operator==(const T &value) const
bool operator==(nullopt_t) const
void swap(Optional &other)
const T & operator*() const
Optional & operator=(Optional &&other) noexcept
Optional & operator=(const Optional &other)
Optional & operator=(T &&value)
fl::Variant< T, Empty > mValue
bool operator==(const Variant< TT, UU > &other) const
const T * operator->() const
bool operator!=(const Optional &other) const
Optional(const Optional &other)
bool empty() const noexcept
constexpr remove_reference< T >::type && move(T &&t) noexcept
optional< T > make_optional(const T &value)
constexpr nullopt_t nullopt