xbt_assert(this->value_);
auto result = std::move(this->value_.get());
this->value_ = boost::optional<T>();
- return std::move(result);
+ return result;
}
private:
template <class T> Future<T> unwrap_future(Future<Future<T>> future);
-template <class T>
-XBT_ATTRIB_DEPRECATED_v323("Please use bind_promise") void bindPromise(Promise<T> promise, Future<T> future)
-{
- bind_promise(promise, future);
-}
-template <class T>
-XBT_ATTRIB_DEPRECATED_v323("Please use unwrap_future") Future<T> unwrapFuture(Future<Future<T>> future)
-{
- unwrap_future(future);
-}
-
/** Result of some (probably) asynchronous operation in the SimGrid kernel
*
* @ref simgrid::simix::Future and @ref simgrid::simix::Future provide an
return future;
}
- template <class F>
- XBT_ATTRIB_DEPRECATED_v323("Please use then_no_unwrap") auto thenNoUnwrap(F continuation)
- -> Future<decltype(continuation(std::move(*this)))>
- {
- then_no_unwrap(continuation);
- }
-
/** Attach a continuation to this future
*
* The future must be valid in order to make this call.
Promise<T> promise;
Future<T> result = promise.get_future();
bind_promise(std::move(promise), std::move(future));
- return std::move(result);
+ return result;
}
/** Producer side of a @ref simgrid::kernel::Future