summaryrefslogtreecommitdiff
path: root/absl/status/statusor.h
diff options
context:
space:
mode:
Diffstat (limited to 'absl/status/statusor.h')
-rw-r--r--absl/status/statusor.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/absl/status/statusor.h b/absl/status/statusor.h
index beedd795..f1932238 100644
--- a/absl/status/statusor.h
+++ b/absl/status/statusor.h
@@ -612,6 +612,21 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
return this->data_;
}
+ // StatusOr<T>::AssignStatus()
+ //
+ // Sets the status of `absl::StatusOr<T>` to the given non-ok status value.
+ //
+ // NOTE: We recommend using the constructor and `operator=` where possible.
+ // This method is intended for use in generic programming, to enable setting
+ // the status of a `StatusOr<T>` when `T` may be `Status`. In that case, the
+ // constructor and `operator=` would assign into the inner value of type
+ // `Status`, rather than status of the `StatusOr` (b/280392796).
+ //
+ // REQUIRES: !Status(std::forward<U>(v)).ok(). This requirement is DCHECKed.
+ // In optimized builds, passing absl::OkStatus() here will have the effect
+ // of passing absl::StatusCode::kInternal as a fallback.
+ using internal_statusor::StatusOrData<T>::AssignStatus;
+
private:
using internal_statusor::StatusOrData<T>::Assign;
template <typename U>