55 if (_state.load(std::memory_order_relaxed) != State::kValue &&
56 _state.exchange(State::kValue, std::memory_order_acq_rel) != State::kValue) {
57 std::move(_p).Set(std::forward<Result>(
result).
Value());
61 if (_state.load(std::memory_order_relaxed) ==
expected &&
62 _state.compare_exchange_strong(
expected, State::kError, std::memory_order_acq_rel)) {
64 error = std::forward<Result>(
result).Error();
66 error = std::forward<Result>(
result).Exception();