rll/optional.h file

Namespaces

namespace rll
Contract-programming related functions and classes.

Classes

struct rll::nullopt_t
A tag type to represent an empty optional.
struct rll::nullopt_t::do_not_use
class rll::bad_optional_access
template <class T>
class rll::optional
template <class T>
class rll::optional<T&>

Functions

template <class T = detail::i_am_secret, class U, class Ret = detail::conditional_t<std::is_same<T, detail::i_am_secret>::value, detail::decay_t<U>, T>>
auto make_optional(U&& v) →  optional<Ret> constexpr
template <class T, class... Args>
auto make_optional(Args && ... args) →  optional<T> constexpr
template <class T, class U, class... Args>
auto make_optional(std::initializer_list<U> il, Args && ... args) →  optional<T> constexpr
template <class T, class U>
auto operator!=(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
template <class T>
auto operator!=(optional<T> const& lhs, nullopt_t) →  bool constexpr noexcept
template <class T>
auto operator!=(nullopt_t, optional<T> const& rhs) →  bool constexpr noexcept
template <class T, class U>
auto operator!=(optional<T> const& lhs, U const& rhs) →  bool constexpr
template <class T, class U>
auto operator!=(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T, class U>
auto operator<(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
template <class T>
auto operator<(optional<T> const&, nullopt_t) →  bool constexpr noexcept
template <class T>
auto operator<(nullopt_t, optional<T> const& rhs) →  bool constexpr noexcept
template <class T, class U>
auto operator<(optional<T> const& lhs, U const& rhs) →  bool constexpr
template <class T, class U>
auto operator<(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T, class U>
auto operator<=(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
template <class T>
auto operator<=(optional<T> const& lhs, nullopt_t) →  bool constexpr noexcept
template <class T>
auto operator<=(nullopt_t, optional<T> const&) →  bool constexpr noexcept
template <class T, class U>
auto operator<=(optional<T> const& lhs, U const& rhs) →  bool constexpr
template <class T, class U>
auto operator<=(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T, class U>
auto operator==(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
Compares two optional objects.
template <class T>
auto operator==(optional<T> const& lhs, nullopt_t) →  bool constexpr noexcept
Compares an optional to a nullopt
template <class T>
auto operator==(nullopt_t, optional<T> const& rhs) →  bool constexpr noexcept
template <class T, class U>
auto operator==(optional<T> const& lhs, U const& rhs) →  bool constexpr
Compares the optional with a value.
template <class T, class U>
auto operator==(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T, class U>
auto operator>(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
template <class T>
auto operator>(optional<T> const& lhs, nullopt_t) →  bool constexpr noexcept
template <class T>
auto operator>(nullopt_t, optional<T> const&) →  bool constexpr noexcept
template <class T, class U>
auto operator>(optional<T> const& lhs, U const& rhs) →  bool constexpr
template <class T, class U>
auto operator>(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T, class U>
auto operator>=(optional<T> const& lhs, optional<U> const& rhs) →  bool constexpr
template <class T>
auto operator>=(optional<T> const&, nullopt_t) →  bool constexpr noexcept
template <class T>
auto operator>=(nullopt_t, optional<T> const& rhs) →  bool constexpr noexcept
template <class T, class U>
auto operator>=(optional<T> const& lhs, U const& rhs) →  bool constexpr
template <class T, class U>
auto operator>=(U const& lhs, optional<T> const& rhs) →  bool constexpr
template <class T>
optional(T) →  optional< T >
template <typename T>
auto some(T&& t) →  optional<std::decay_t<T>>
Wrap a value in an optional.
template <class T, detail::enable_if_t<std::is_move_constructible<T>::value>* = nullptr, detail::enable_if_t<detail::is_swappable<T>::value>* = nullptr>
void swap(optional<T>& lhs, optional<T>& rhs) noexcept(…)

Variables

static nullopt_t nullopt constexpr
Represents an empty optional.
auto none constexpr
Wrap an empty value in an optional.

Defines

#define TL_OPTIONAL_11_CONSTEXPR
#define TL_OPTIONAL_CXX14
#define TL_OPTIONAL_IS_TRIVIALLY_COPY_ASSIGNABLE(T)
#define TL_OPTIONAL_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T)
#define TL_OPTIONAL_IS_TRIVIALLY_DESTRUCTIBLE(T)