4#ifndef RPNXDATASTRUCTURES_RESULT_HPP
5#define RPNXDATASTRUCTURES_RESULT_HPP
19 template <
typename T >
23 std::exception_ptr er;
45 result(std::exception_ptr er) : er(er)
57 std::rethrow_exception(er);
71 std::rethrow_exception(er);
74 assert(t.has_value());
80 T
const &
get() const &
84 std::rethrow_exception(er);
87 assert(t.has_value());
102 std::rethrow_exception(er);
105 assert(t.has_value());
107 return std::move(t.value());
115 std::rethrow_exception(er);
118 assert(t.has_value());
120 return std::move(t.value());
138 return std::move(*this).get();
144 return std::move(*this).get();
154 this->t = std::move(t);
179 return t.has_value() || er !=
nullptr;
188 return t.has_value();
197 return er !=
nullptr;
219 inline operator bool()
const
232 std::exception_ptr er;
258 std::rethrow_exception(er);
270 std::rethrow_exception(er);
272 throw std::logic_error(
"No value");
322 return er !=
nullptr;
353 inline operator bool()
const
result()
Constructs an empty result object.
Definition result.hpp:238
bool has_value() const
Checks if the result has a value (void).
Definition result.hpp:311
void set_error(std::exception_ptr er)
Sets the exception of the result.
Definition result.hpp:295
void test() const
Tests if the result contains an exception and rethrows it if present.
Definition result.hpp:254
std::exception_ptr get_error() const
Gets the stored exception.
Definition result.hpp:335
result(std::exception_ptr er)
Constructs a result object with an exception.
Definition result.hpp:246
bool has_error() const
Checks if the result has an exception.
Definition result.hpp:320
void set_value()
Sets the value of the result (void).
Definition result.hpp:285
bool has_exception() const
Alias for has_error().
Definition result.hpp:326
void set_exception(std::exception_ptr er)
Alias for set_error().
Definition result.hpp:302
bool has_result() const
Checks if the result has a value (void) or an exception.
Definition result.hpp:344
void value() const
Alias for get().
Definition result.hpp:277
void get() const
Gets the stored value (void).
Definition result.hpp:267
T const & value() const &
Alias for get().
Definition result.hpp:130
T & get() &
Returns the stored value from an lvalue result.
Definition result.hpp:67
bool has_exception() const
Alias for has_error().
Definition result.hpp:201
bool has_error() const
Checks if the result has an exception.
Definition result.hpp:195
T const & get() const &
Returns the stored value from an lvalue result.
Definition result.hpp:80
T && value() &&
Alias for rvalue-qualified get().
Definition result.hpp:136
void set_value(T t)
Sets the value of the result.
Definition result.hpp:151
void set_error(std::exception_ptr er)
Sets the exception of the result.
Definition result.hpp:161
result(std::exception_ptr er)
Constructs a result object with an exception.
Definition result.hpp:45
void set_exception(std::exception_ptr er)
Alias for set_error().
Definition result.hpp:168
T && get() &&
Returns the stored value from an rvalue result.
Definition result.hpp:98
T & value() &
Alias for get().
Definition result.hpp:124
result(T t)
Constructs a result object with a value.
Definition result.hpp:30
bool has_value() const
Checks if the result has a value.
Definition result.hpp:186
T const && get() const &&
Returns the stored value from an rvalue result.
Definition result.hpp:111
T const && value() const &&
Alias for const rvalue-qualified get().
Definition result.hpp:142
void test() const
Tests if the result contains an exception and rethrows it if present.
Definition result.hpp:53
bool has_result() const
Checks if the result has a value or an exception.
Definition result.hpp:177
std::exception_ptr get_error() const
Gets the stored exception.
Definition result.hpp:210
result()
Constructs an empty result object.
Definition result.hpp:37
Containers, iterator adapters, callable wrappers, and value utilities.
Definition annex.hpp:14