12#ifndef GMP_SERIALIZATION_ERROR_HPP_
13#define GMP_SERIALIZATION_ERROR_HPP_
49 static constexpr std::size_t
unknown_offset = std::numeric_limits<std::size_t>::max();
82 return storage_.index() == 0;
90 return std::get<0>(storage_);
94 return std::get<0>(storage_);
98 return std::get<0>(std::move(storage_));
110 return std::move(*this).value();
122 return std::get<1>(storage_).error;
126 return std::get<1>(storage_).error;
130 std::variant<T, serialization_unexpected> storage_;
140 return !error_.has_value();
148 return error_.value();
152 return error_.value();
156 std::optional<serialization_error> error_;
159inline serialization_error
162 return {code, std::move(message), std::move(path), offset};
169 if (!error.
path.empty()) {
173 error.
path = std::move(path);
181 : std::runtime_error(
error.describe()), error_(
error) {}
const serialization_error & error() const noexcept
serialization_exception(const serialization_error &error)
serialization_result() noexcept=default
bool has_value() const noexcept
serialization_error & error() &
const serialization_error & error() const &
const serialization_error & error() const &
const T * operator->() const
const T & value() const &
const T & operator*() const &
serialization_result(T value)
bool has_value() const noexcept
serialization_result(serialization_error error)
serialization_error & error() &
serialization_error make_serialization_error(serialization_errc code, std::string message, std::string path={}, std::size_t offset=serialization_error::unknown_offset)
serialization_error prepend_serialization_path(serialization_error error, std::string_view segment)
static constexpr std::size_t unknown_offset
std::string describe() const
serialization_error error