+/** Set a promise/result from a future/result
+ *
+ * Roughly this does:
+ *
+ * <pre>promise.set_value(future);</pre>
+ *
+ * but it takes care of exceptions and works with `void`.
+ *
+ * We might need this when working with generic code because
+ * the trivial implementation does not work with `void` (before C++1z).
+ *
+ * @param promise output (a valid future or a result)
+ * @param future input (a ready/waitable future or a valid result)
+ */
+template <class P, class F> inline void set_promise(P& promise, F&& future)
+{
+ fulfill_promise(promise, [&] { return std::forward<F>(future).get(); });
+}
+template <class P, class F>
+inline XBT_ATTRIB_DEPRECATED_v323("Please use xbt::set_promise()") void setPromise(P& promise, F&& future)
+{
+ fulfill_promise(promise, [&] { return std::forward<F>(future).get(); });
+}
+