47 concepts::detail::ExpectedCanConvertConstructor<void, E, void, F>)
49 : m_error(
other.m_error) {}
68 template<
typename... Args>
73 template<
typename U,
typename... Args>
94 m_error =
error.error();
101 m_error = util::move(
error).error();
105 constexpr explicit operator bool()
const {
return has_value(); }
106 constexpr auto has_value() const ->
bool {
return !m_error.has_value(); }
116 constexpr auto error() & -> E& {
return *m_error; }
117 constexpr auto error() const& -> E const& {
return *m_error; }
118 constexpr auto error() && -> E&& {
return *util::move(m_error); }
119 constexpr auto error() const&& -> E const&& {
return *util::move(m_error); }
128 template<
typename U,
typename G>
137 template<concepts::EqualityComparableWith<E> G>
139 if (a.has_value() != b.has_value()) {
142 return a.has_value() || a.error() == b.error();
145 template<concepts::EqualityComparableWith<E> G>
147 return !a && a.error() == b.error();
150 template<concepts::RemoveCVRefSameAs<Expected> Self,
typename F,
151 typename U = meta::UnwrapRefDecay<meta::InvokeResult<F>>>
165 template<concepts::RemoveCVRefSameAs<Expected> Self,
typename F,
typename R = meta::InvokeResult<F>>
174 template<concepts::RemoveCVRefSameAs<Expected> Self,
typename F,
175 typename R = meta::InvokeResult<F, meta::Like<Self, E>>>
184 template<concepts::RemoveCVRefSameAs<Expected> Self,
typename F,
185 typename G = meta::UnwrapRefDecay<meta::InvokeResult<F, meta::Like<Self, E>>>>
196 util::forward<Self>(self).
error()) };
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition monad_interface.h:15
constexpr Expected(types::InPlace)
Definition expected_void_value.h:66
constexpr friend auto tag_invoke(types::Tag< function::monad::fmap >, Self &&self, F &&function) -> Expected< U, E >
Definition expected_void_value.h:153
constexpr void operator*() const
Definition expected_void_value.h:110
constexpr friend auto operator==(Expected const &a, Expected< void, G > const &b) -> bool
Definition expected_void_value.h:138
friend class Expected
Definition expected_void_value.h:129
constexpr auto operator=(Expected const &) -> Expected &requires(!concepts::CopyConstructible< E >)=delete
E Error
Definition expected_void_value.h:29
constexpr auto error() const &-> E const &
Definition expected_void_value.h:117
constexpr friend void tag_invoke(types::Tag< util::swap >, Expected &a, Expected &b)
Definition expected_void_value.h:131
void Value
Definition expected_void_value.h:28
Unexpected< E > UnexpectedType
Definition expected_void_value.h:30
constexpr void value() const &
Definition expected_void_value.h:112
constexpr friend auto operator==(Expected const &a, Unexpected< G > const &b) -> bool
Definition expected_void_value.h:146
constexpr auto error() &-> E &
Definition expected_void_value.h:116
constexpr auto has_value() const -> bool
Definition expected_void_value.h:106
constexpr Expected(Expected &&)=default
constexpr Expected(types::Unexpect, std::initializer_list< U > list, Args &&... args)
Definition expected_void_value.h:75
constexpr Expected(Expected const &)=delete
constexpr auto operator=(Expected const &) -> Expected &requires(concepts::CopyConstructible< E >)=default
constexpr auto operator=(Expected &&) -> Expected &requires(concepts::MoveConstructible< E >)=default
constexpr friend auto tag_invoke(types::Tag< function::monad::fail >, Self &&self, F &&function) -> R
Definition expected_void_value.h:177
constexpr void emplace()
Definition expected_void_value.h:108
constexpr F const & other
Definition expected_void_value.h:52
constexpr Expected(Expected const &)=default
constexpr ~Expected()=default
constexpr void value() &&
Definition expected_void_value.h:114
constexpr Expected()=default
constexpr void __try_move_out() &&
Definition expected_void_value.h:125
constexpr Expected(types::Unexpect, Args &&... args)
Definition expected_void_value.h:70
constexpr auto __try_did_succeed() &&-> Expected
Definition expected_void_value.h:124
constexpr auto __try_did_fail() &&-> Unexpected< E >
Definition expected_void_value.h:121
constexpr friend auto tag_invoke(types::Tag< function::monad::fmap_right >, Self &&self, F &&function) -> Expected< void, G >
Definition expected_void_value.h:186
constexpr auto error() &&-> E &&
Definition expected_void_value.h:118
constexpr auto error() const &&-> E const &&
Definition expected_void_value.h:119
constexpr friend auto tag_invoke(types::Tag< function::monad::bind >, Self &&self, F &&function) -> R
Definition expected_void_value.h:167
Definition optional_forward_declaration.h:5
Definition unexpected.h:14
Definition operations.h:11
Definition operations.h:99
Definition operations.h:34
Definition operations.h:43
constexpr auto invoke
Definition invoke.h:100
constexpr auto in_place
Definition in_place.h:8
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto unexpect
Definition unexpect.h:8
constexpr struct di::util::SwapFunction swap
constexpr auto in_place
Definition in_place.h:8