13template <
typename T>
class Optional;
64 explicit operator bool()
const {
return !
empty(); }
73 return *
ptr() == *other.
ptr();
82 return *
ptr() == value;
94 template <
typename TT,
typename UU>
96 if (!other.template holdsTypeOf<T>()) {
105 return *
ptr() == *other.template
ptr<T>();
109 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)
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