21 requires std::is_convertible_v<F, E>
25 requires std::is_convertible_v<F, E>
37 return std::move(error_);
41 return std::addressof(error_);
45 return std::addressof(error_);
48 constexpr E &
error() &
noexcept {
52 constexpr const E &
error() const & noexcept {
56 constexpr E &&
error() &&
noexcept {
57 return std::move(error_);
64template <
typename T,
typename E>
75 requires std::is_convertible_v<U, T>
81 requires std::is_convertible_v<F, E>
84 explicit constexpr operator bool() const noexcept {
85 return std::holds_alternative<T>(valueOrError_);
89 return std::get<T>(valueOrError_);
93 return std::get<T>(valueOrError_);
97 return std::get<T>(std::move(valueOrError_));
101 return std::addressof(std::get<T>(valueOrError_));
105 return std::addressof(std::get<T>(valueOrError_));
109 return std::get<T>(valueOrError_);
112 constexpr const T &
value() const & noexcept {
113 return std::get<T>(valueOrError_);
117 return std::get<T>(std::move(valueOrError_));
121 return *std::get<Unexpected<E>>(valueOrError_);
124 constexpr const E &
error() const & noexcept {
125 return *std::get<Unexpected<E>>(valueOrError_);
129 return *std::get<Unexpected<E>>(std::move(valueOrError_));
133 std::variant<T, Unexpected<E>> valueOrError_;
143 template <
typename F>
144 requires std::is_convertible_v<F, E>
147 explicit constexpr operator bool()
const {
155 constexpr const E &
error() const & noexcept {
160 return **std::move(error_);
164 std::optional<Unexpected<E>> error_;
constexpr Expected()
Definition Expected.h:139
constexpr E && error() &&noexcept
Definition Expected.h:159
constexpr const E & error() const &noexcept
Definition Expected.h:155
constexpr E & error() &noexcept
Definition Expected.h:151
constexpr Expected(Unexpected< E > error)
Definition Expected.h:141
constexpr Expected(Unexpected< F > error)
Definition Expected.h:145
constexpr const T * operator->() const noexcept
Definition Expected.h:104
constexpr T & value() &noexcept
Definition Expected.h:108
constexpr T && value() &&noexcept
Definition Expected.h:116
constexpr T & operator*() &noexcept
Definition Expected.h:88
constexpr T && operator*() &&noexcept
Definition Expected.h:96
constexpr Expected(T value)
Definition Expected.h:72
constexpr const T & value() const &noexcept
Definition Expected.h:112
constexpr E && error() &&noexcept
Definition Expected.h:128
constexpr Expected(Unexpected< E > error)
Definition Expected.h:78
constexpr Expected()=default
T value_type
Definition Expected.h:67
constexpr const T & operator*() const &noexcept
Definition Expected.h:92
constexpr E & error() &noexcept
Definition Expected.h:120
constexpr const E & error() const &noexcept
Definition Expected.h:124
E error_type
Definition Expected.h:68
constexpr Expected(U value)
Definition Expected.h:76
constexpr Expected(Unexpected< F > error)
Definition Expected.h:82
constexpr T * operator->() noexcept
Definition Expected.h:100
constexpr E & error() &noexcept
Definition Expected.h:48
E error_type
Definition Expected.h:16
constexpr Unexpected(E error)
Definition Expected.h:18
constexpr Unexpected(F error)
Definition Expected.h:22
constexpr const E & error() const &noexcept
Definition Expected.h:52
constexpr Unexpected(Unexpected< F > error)
Definition Expected.h:26
constexpr E && error() &&noexcept
Definition Expected.h:56
constexpr E * operator->() noexcept
Definition Expected.h:40
constexpr const E * operator->() const noexcept
Definition Expected.h:44
constexpr E && operator*() &&noexcept
Definition Expected.h:36
constexpr const E & operator*() const &noexcept
Definition Expected.h:32
constexpr E & operator*() &noexcept
Definition Expected.h:28
Definition GraphColoringAllocator.h:13