2#ifndef LIBSBX_UTILITY_EXPECTED_HPP_
3#define LIBSBX_UTILITY_EXPECTED_HPP_
9namespace sbx::utility {
11template<
typename Type>
16 constexpr unexpected(
const Type& value) noexcept
21 constexpr auto value()
const noexcept ->
const Type& {
37 auto what()
const noexcept ->
const char*
override {
38 return "bad expected access";
43template<
typename Type,
typename Error>
48 using value_type = Type;
49 using error_type = Error;
52 template<
typename Other>
55 constexpr expected(
const Type& value) noexcept
61 constexpr auto has_value()
const noexcept ->
bool {
62 return std::holds_alternative<Type>(_value);
65 constexpr operator bool()
const noexcept {
69 constexpr auto value()
const ->
const Type& {
74 return std::get<Type>(_value);
77 constexpr auto operator*()
const ->
const Type& {
81 constexpr auto operator->()
const ->
const Type* {
85 constexpr auto error()
const ->
const Error& {
90 return std::get<Error>(_value);
95 std::variant<Type, Error> _value;
Definition: expected.hpp:44
Definition: expected.hpp:12
Definition: expected.hpp:31