1#ifndef LIBSBX_UTILITY_EXPECTED_HPP_
2#define LIBSBX_UTILITY_EXPECTED_HPP_
8namespace sbx::utility {
10template<
typename Type>
15 constexpr unexpected(
const Type& value) noexcept
20 constexpr auto value()
const noexcept ->
const Type& {
36 auto what()
const noexcept ->
const char*
override {
37 return "bad expected access";
42template<
typename Type,
typename Error>
47 using value_type = Type;
48 using error_type = Error;
51 template<
typename Other>
54 constexpr expected(
const Type& value) noexcept
60 constexpr auto has_value()
const noexcept ->
bool {
61 return std::holds_alternative<Type>(_value);
64 constexpr operator bool()
const noexcept {
68 constexpr auto value()
const ->
const Type& {
73 return std::get<Type>(_value);
76 constexpr auto operator*()
const ->
const Type& {
80 constexpr auto operator->()
const ->
const Type* {
84 constexpr auto error()
const ->
const Error& {
89 return std::get<Error>(_value);
94 std::variant<Type, Error> _value;
Definition: expected.hpp:43
Definition: expected.hpp:11
Definition: expected.hpp:30