![]() |
Home | Libraries | People | FAQ | More |
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 boost::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 boost::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 boost::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: boost/asio/execution/bulk_execute.hpp
Convenience header: boost/asio/execution.hpp