xbt_assert(this->value_);
auto result = std::move(this->value_.get());
this->value_ = boost::optional<T>();
xbt_assert(this->value_);
auto result = std::move(this->value_.get());
this->value_ = boost::optional<T>();
Promise<T> promise;
Future<T> result = promise.get_future();
bind_promise(std::move(promise), std::move(future));
Promise<T> promise;
Future<T> result = promise.get_future();
bind_promise(std::move(promise), std::move(future));