Initiating functions:
— are function templates with template parameter CompletionToken
;
— accept, as the final parameter, a completion token
object token
of type CompletionToken
;
— specify a completion signature, which is a call signature
(C++Std [func.def]) Signature
that determines the arguments
to the completion handler.
An initiating function determines the type CompletionHandler
of its completion handler function object by performing typename
async_result<decay_t<CompletionToken>, Signature>::completion_handler_type
.
The completion handler object completion_handler
is initialized
with forward<CompletionToken>(token)
. [Note:
No other requirements are placed on the type CompletionToken
.
—end note]
The type CompletionHandler
must satisfy the requirements of
Destructible
(C++Std [destructible]) and MoveConstructible
(C++Std [moveconstructible]), and be callable with the specified call signature.
In this library, all initiating functions specify a Completion
signature element that defines the call signature Signature
.
The Completion signature elements in this Technical
Specification have named parameters, and the results of an asynchronous
operation are specified in terms of these names.