42 [[nodiscard]]
auto message() const noexcept -> std::string_view {
return message_; }
101 static_assert(!std::is_same_v<T, Status>,
"StatusOr<Status> is not allowed");
106 : storage_(std::move(
value))
114 : storage_(std::move(
status))
119 [[nodiscard]]
auto ok() const noexcept ->
bool {
return std::holds_alternative<T>(storage_); }
129 return std::get<Status>(storage_);
138 return std::get<Status>(std::move(storage_));
144 [[nodiscard]]
auto value() const& -> const T& {
return std::get<T>(storage_); }
149 [[nodiscard]]
auto value() && -> T&& {
return std::get<T>(std::move(storage_)); }
155 [[nodiscard]]
auto operator*() && -> T&& {
return std::move(*this).value(); }
161 std::variant<Status, T> storage_;
A value-or-error type, similar to std::expected (C++23).
Definition status.h:100
auto status() &&-> Status
Returns the error status (move).
Definition status.h:133
StatusOr(T value)
Constructs a StatusOr holding a value (implicit conversion).
Definition status.h:105
auto operator->() const -> const T *
Arrow operator for member access on the stored value.
Definition status.h:158
auto operator*() const &-> const T &
Dereferences to the stored value (const).
Definition status.h:152
auto value() &&-> T &&
Returns an rvalue reference to the value.
Definition status.h:149
auto value() const &-> const T &
Returns a const reference to the value.
Definition status.h:144
auto status() const &-> Status
Returns the error status.
Definition status.h:124
StatusOr(Status status)
Constructs a StatusOr holding an error status.
Definition status.h:113
auto operator*() &&-> T &&
Dereferences to the stored value (move).
Definition status.h:155
auto ok() const noexcept -> bool
Returns true if a value is present (no error).
Definition status.h:119
A lightweight status object carrying an error code and message.
Definition status.h:23
Status()=default
Constructs an OK status.
auto code() const noexcept -> StatusCode
Returns the error code.
Definition status.h:39
auto ok() const noexcept -> bool
Returns true if the status represents success.
Definition status.h:36
auto message() const noexcept -> std::string_view
Returns the error message (empty for OK status).
Definition status.h:42
Status(StatusCode code, std::string message)
Constructs a status with the given code and message.
Definition status.h:29
C++20 compile-time type-safe configuration library.
Definition conf.h:13
auto IsInternal(const Status &status) noexcept -> bool
Returns true if the status has code kInternal.
Definition status.h:87
StatusCode
Error codes used by cppfig operations.
Definition status.h:12
auto NotFoundError(std::string message) -> Status
Returns a NotFound error status.
Definition status.h:55
auto IsInvalidArgument(const Status &status) noexcept -> bool
Returns true if the status has code kInvalidArgument.
Definition status.h:81
auto IsNotFound(const Status &status) noexcept -> bool
Returns true if the status has code kNotFound.
Definition status.h:75
auto InternalError(std::string message) -> Status
Returns an Internal error status.
Definition status.h:67
auto OkStatus() -> Status
Returns an OK status.
Definition status.h:52
auto InvalidArgumentError(std::string message) -> Status
Returns an InvalidArgument error status.
Definition status.h:61