3#include <xrpl/basics/contract.h>
5#include <boost/outcome.hpp>
36 Throw<bad_expected_access>();
44 Throw<bad_expected_access>();
52 Throw<bad_expected_access>();
91 return std::move(
val_);
97 return std::move(
val_);
105template <
typename E, std::
size_t N>
109template <
class T,
class E>
110class [[nodiscard]]
Expected :
private boost::outcome_v2::result<T, E, detail::throw_policy>
112 using Base = boost::outcome_v2::result<T, E, detail::throw_policy>;
115 template <
typename U>
121 template <
typename U>
130 return Base::has_value();
136 return Base::value();
142 return Base::value();
148 return Base::error();
154 return Base::error();
158 operator bool()
const
166 [[nodiscard]]
constexpr T&
169 return this->value();
172 [[nodiscard]]
constexpr T
const&
175 return this->value();
178 [[nodiscard]]
constexpr T*
181 return &this->value();
184 [[nodiscard]]
constexpr T
const*
187 return &this->value();
194class [[nodiscard]]
Expected<void, E> :
private boost::outcome_v2::result<void, E, detail::throw_policy>
196 using Base = boost::outcome_v2::result<void, E, detail::throw_policy>;
205 template <
typename U>
214 return Base::error();
220 return Base::error();
224 operator bool()
const
226 return Base::has_value();
boost::outcome_v2::result< void, E, detail::throw_policy > Base
constexpr E const & error() const
constexpr Expected(Unexpected< U > e)
constexpr bool has_value() const
constexpr T const & value() const
constexpr Expected(U &&r)
constexpr T const & operator*() const
constexpr T & operator*()
boost::outcome_v2::result< T, E, detail::throw_policy > Base
constexpr T * operator->()
constexpr T const * operator->() const
constexpr Expected(Unexpected< U > e)
constexpr E const & error() const
constexpr E && value() &&
constexpr E const & value() const &
constexpr Unexpected(E &&e)
constexpr E const && value() const &&
constexpr Unexpected(E const &e)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Expected is an approximation of std::expected (hoped for in C++23)
static constexpr void wide_value_check(Impl &&self)
static constexpr void wide_error_check(Impl &&self)
static constexpr void wide_exception_check(Impl &&self)