5 #ifndef PACKIO_EXPECTED_H
6 #define PACKIO_EXPECTED_H
13 template <
typename Error>
16 explicit unexpected(Error error) : error_(std::move(error)) {}
17 Error& error() {
return error_; }
23 template <
typename T,
typename Error>
27 expected(unexpected<G> unexpected)
28 : data_(Error(std::move(unexpected.error())))
31 expected(T value) : data_(std::move(value)) {}
33 Error& error() {
return std::get<Error>(data_); }
34 T& value() {
return std::get<T>(data_); }
36 explicit operator bool()
const {
return std::holds_alternative<T>(data_); }
37 T& operator*() {
return value(); }
38 T* operator->() {
return &this->operator*(); }
41 std::variant<T, Error> data_;
The packio namespace.
Definition: arg.h:14