1#ifndef MRS_LIB_CORO_INTERNAL_RESULT_STORAGE_HPP_
2#define MRS_LIB_CORO_INTERNAL_RESULT_STORAGE_HPP_
10namespace mrs_lib::coro::internal
38 constexpr void set_value(T&& val)
noexcept(std::is_nothrow_move_constructible_v<T>)
40 assert(data_.index() == State::empty);
41 data_.template emplace<State::value>(std::move(val));
51 assert(data_.index() == State::empty || data_.valueless_by_exception());
52 data_.template emplace<State::exception>(std::move(eptr));
65 size_t state = data_.index();
66 if (state == State::exception)
68 std::rethrow_exception(std::get<State::exception>(data_));
70 assert(state == State::value);
71 return std::get<State::value>(std::move(data_));
75 std::variant<std::monostate, T, std::exception_ptr> data_;
A variant-like class for storing the result of non-void task.
Definition result_storage.hpp:18
constexpr T get_value() &&
Get previously stored result or exception.
Definition result_storage.hpp:63
constexpr void set_value(T &&val) noexcept(std::is_nothrow_move_constructible_v< T >)
Store result of task.
Definition result_storage.hpp:38
void set_exception(std::exception_ptr eptr) noexcept
Store exception into the result.
Definition result_storage.hpp:49