template<typename T>
eckit::Optional class

Base classes

template<typename T, typename Enable = void>
class OptionalBase<T>

Constructors, destructors, conversion operators

Optional() constexpr noexcept
Optional(T&& v) explicit constexpr noexcept
Optional(const T& v) explicit constexpr
Optional(const Optional<T>& rhs) constexpr
~Optional() defaulted
Optional(Optional<T>&& rhs) noexcept
operator bool() const explicit constexpr

Public functions

void reset() noexcept
auto operator=(const Optional<T>& other) -> Optional<T>&
auto operator=(Optional<T>&& other) -> Optional<T>& noexcept
auto operator=(const None&) -> Optional<T>&
template<typename U, typename enable = typename std::enable_if<((!std::is_same<typename std::decay<U>::type, Optional<T>>::value)&& (std::is_constructible<T, U>::value)&& (std::is_assignable<T&, U>::value))>::type>
auto operator=(U&& arg) -> Optional<T>&
template<typename... Args>
auto emplace(Args && ... args) -> T&
template<class U, class... Args, typename enable = typename std::enable_if<std::is_constructible<T, std::initializer_list<U>&, Args && ...>::value>::type>
auto emplace(std::initializer_list<U> ilist, Args && ... args) -> T&
auto has_value() const -> bool constexpr
auto value() const & -> const T&
auto value() & -> T&
auto value() && -> T&&
auto operator*() const & -> const T& constexpr
auto operator*() & -> T&
auto operator*() && -> T&&
auto operator()() const & -> const T& constexpr
auto operator()() & -> T&
auto operator()() && -> T&&
auto operator->() const & -> const T* constexpr
auto operator->() & -> T*