44 [[nodiscard]]
auto message() const noexcept -> std::string_view {
return message_; }
103 static_assert(!std::is_same_v<T, Status>,
"StatusOr<Status> is not allowed");
108 : storage_(std::move(
value))
121 : storage_(std::move(
status))
123 assert(!std::get<Status>(storage_).
ok() &&
"StatusOr must not be constructed from an OK status");
127 [[nodiscard]]
auto ok() const noexcept ->
bool {
return std::holds_alternative<T>(storage_); }
137 return std::get<Status>(storage_);
146 return std::get<Status>(std::move(storage_));
152 [[nodiscard]]
auto value() const& -> const T& {
return std::get<T>(storage_); }
157 [[nodiscard]]
auto value() && -> T&& {
return std::get<T>(std::move(storage_)); }
163 [[nodiscard]]
auto operator*() && -> T&& {
return std::move(*this).value(); }
169 std::variant<Status, T> storage_;
A value-or-error type, similar to std::expected (C++23).
Definition status.h:102
auto status() &&-> Status
Returns the error status (move).
Definition status.h:141
StatusOr(T value)
Constructs a StatusOr holding a value (implicit conversion).
Definition status.h:107
auto operator->() const -> const T *
Arrow operator for member access on the stored value.
Definition status.h:166
auto operator*() const &-> const T &
Dereferences to the stored value (const).
Definition status.h:160
auto value() &&-> T &&
Returns an rvalue reference to the value.
Definition status.h:157
auto value() const &-> const T &
Returns a const reference to the value.
Definition status.h:152
auto status() const &-> Status
Returns the error status.
Definition status.h:132
StatusOr(Status status)
Constructs a StatusOr holding an error status.
Definition status.h:120
auto operator*() &&-> T &&
Dereferences to the stored value (move).
Definition status.h:163
auto ok() const noexcept -> bool
Returns true if a value is present (no error).
Definition status.h:127
A lightweight status object carrying an error code and message.
Definition status.h:25
Status()=default
Constructs an OK status.
auto code() const noexcept -> StatusCode
Returns the error code.
Definition status.h:41
auto ok() const noexcept -> bool
Returns true if the status represents success.
Definition status.h:38
auto message() const noexcept -> std::string_view
Returns the error message (empty for OK status).
Definition status.h:44
Status(StatusCode code, std::string message)
Constructs a status with the given code and message.
Definition status.h:31
C++20 compile-time type-safe configuration library.
Definition conf.h:17
auto IsInternal(const Status &status) noexcept -> bool
Returns true if the status has code kInternal.
Definition status.h:89
StatusCode
Error codes used by cppfig operations.
Definition status.h:14
auto NotFoundError(std::string message) -> Status
Returns a NotFound error status.
Definition status.h:57
auto IsInvalidArgument(const Status &status) noexcept -> bool
Returns true if the status has code kInvalidArgument.
Definition status.h:83
auto IsNotFound(const Status &status) noexcept -> bool
Returns true if the status has code kNotFound.
Definition status.h:77
auto InternalError(std::string message) -> Status
Returns an Internal error status.
Definition status.h:69
auto OkStatus() -> Status
Returns an OK status.
Definition status.h:54
auto InvalidArgumentError(std::string message) -> Status
Returns an InvalidArgument error status.
Definition status.h:63