std::experimental::future<T>:: then
|
template
<
class
F
>
future < /* see below */ > then ( F && func ) ; |
||
Присоедините продолжение func к * this . Поведение не определено, если * this не имеет связанного разделяемого состояния (т.е., valid ( ) == false ).
Создает общее состояние, связанное с возвращаемым объектом
future
, и копию
fd
из
func
, созданную как если бы с помощью
DECAY_COPY
(
std::
forward
<
F
>
(
func
)
)
, вычисленную в потоке, вызывающем
then
, где
DECAY_COPY
определяется как
template<class T> std::decay_t<T> DECAY_COPY(T&& v) { return std::forward<T>(v); } |
` был сохранен без изменений, как и требовалось. HTML-разметка и атрибуты также остались нетронутыми.
Когда общее состояние, в настоящее время связанное с * 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
является
std::
experimental
::
future
<
T2
>
для некоторого типа
T2
, то возвращаемым типом
then
будет
std::
experimental
::
future
<
T2
>
, в противном случае это
std::
experimental
::
future
<
U
>
. Это известно как
неявная распаковка
.
Если происходит неявное разворачивание и продолжение возвращает недопустимый
future
, тогда общее состояние переводится в готовность с исключением типа
std::future_error
с кодом ошибки
std::future_errc::broken_promise
.
После возврата из этой функции valid ( ) принимает значение false .
Параметры
| func | - | продолжение для присоединения |
Возвращаемое значение
Объект std::experimental::future , связанный с общим состоянием, созданным этим объектом. valid ( ) == true для возвращаемого объекта.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |