Each algorithm has a default implementation
. Let
sndr be the result of an invocation of such an algorithm or
an object equal to the result (
[concepts.equality]), and
let
Sndr be
decltype((sndr)). Let
rcvr be a receiver of type
Rcvr
with associated environment
env of type
Env
such that
sender_to<Sndr, Rcvr> is
true. For the default implementation of the algorithm that produced
sndr,
connecting
sndr to
rcvr and
starting the resulting operation state (
[exec.async.ops])
necessarily results in the potential evaluation (
[basic.def.odr]) of
a set of completion operations
whose first argument is a subexpression equal to
rcvr. Let
Sigs be a pack of completion signatures corresponding to
this set of completion operations
. Then the type of the expression
get_completion_signatures(sndr, env) is
a specialization of
the class template
completion_signatures (
[exec.util.cmplsig]),
the set of whose template arguments is
Sigs. If a user-provided implementation of the algorithm
that produced
sndr is selected instead of the default,
any completion signature
that is in the set of types
denoted by
completion_signatures_of_t<Sndr, Env> and
that is not part of
Sigs shall correspond to
error or stopped completion operations,
unless otherwise specified
.