A customisation point that creates a bulk sender.
constexpr unspecified bulk_execute = unspecified;
The name execution::bulk_execute
denotes a customisation point
object. If is_convertible_v<N,
size_t>
is true, then the expression execution::bulk_execute(S,
F, N)
for
some subexpressions S
, F
, and N
is expression-equivalent to:
S.bulk_execute(F, N)
,
if that expression is valid. If the function selected does not execute
N
invocations of the
function object F
on
the executor S
in bulk
with forward progress guarantee asio::query(S, execution::bulk_guarantee)
, and the result of that function does
not model sender<void>
,
the program is ill-formed with no diagnostic required.
bulk_execute(S, F, N)
, if that expression is valid, with overload
resolution performed in a context that includes the declaration void bulk_execute();
and that does not include a declaration
of execution::bulk_execute
. If the function selected
by overload resolution does not execute N
invocations of the function object F
on the executor S
in
bulk with forward progress guarantee asio::query(E, execution::bulk_guarantee)
, and the result of that function does
not model sender<void>
,
the program is ill-formed with no diagnostic required.
F
and executor_index_t<remove_cvref_t<S>>
model invocable
and if asio::query(S, execution::bulk_guarantee)
equals execution::bulk_guarantee.unsequenced
, then
DECAY_COPY(std::forward<decltype(F)>(F))
on the calling thread to create a function
object cf
. [Note: Additional
copies of cf
may subsequently
be created. --end note.]
i
in
N
, cf(i)
(or copy of cf
))
will be invoked at most once by an execution agent that is unique for
each value of i
.
cf
.
cf
.
execution::bulk_execute(S, F, N)
is ill-formed.
Header: asio/execution/bulk_execute.hpp
Convenience header: asio/execution.hpp