std::experimental::future<T>::then
template < class F > future</* see below */> then(F&& func) ; |
||
附着持续 func
到 *this 。若 *this 无关联共享状态(即 valid() == false )则行为未定义。
创建与要返回的 future
对象关联的共享状态,和如同用 DECAY_COPY(std::forward<F>(func)) 构造,在调用 then
的线程中求值的 func
的副本 fd ,其中 DECAY_COPY 定义为
template <class T> std::decay_t<T> DECAY_COPY(T&& v) { return std::forward<T>(v); } |
当前与 *this 关联的共享状态就绪时,在未指定的执行线程上调用持续 INVOKE(std::move(fd), std::move(*this)) ,其中 INVOKE 是 可调用 (Callable) 中定义的操作。若该表达式非法,则行为未定义。
将从持续返回的任何值存储为返回的 future
对象的共享状态中的结果。将任何从持续的执行传播的异常存储为返回的 future
对象的共享状态中的异常结果。
令 U
为持续的返回类型(即 std::result_of_t<std::decay_t<F>(std::experimental::future<T>)> )。若 U
为对于某类型 T2
的 std::experimental::future<T2> ,则 then
的返回类型为 std::experimental::future<T2> ,否则它为 std::experimental::future<U> 。这被称为隐式解包装。
若发生隐式解包装且持续返回非法的 future
,则用以 std::future_errc::broken_promise 为错误条件的 std::future_error 类型异常令共享状态就绪。
此函数返回后, valid() 为 false 。
参数
func | - | 要附着的持续。 |
返回值
与此对象所创建的共享状态关联的 std::experimental::future 对象。对于返回的对象 valid() == true 。
示例
本节未完成 原因:暂无示例 |