Iros
 
Loading...
Searching...
No Matches
run.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace di::execution {
9namespace run_ns {
10 struct Function {
11 template<typename T>
13 auto operator()(T& resource) const {
15 static_assert(concepts::Sender<R>, "run() customizations must return a SequenceSender.");
16 static_assert(meta::SequenceCardinality<R> == 1,
17 "run() customizations must return a SequenceSender with cardinality 1.");
18 return tag_invoke(*this, resource);
19 }
20 };
21}
22
40constexpr inline auto run = run_ns::Function {};
41}
42
43namespace di::concepts {
49template<typename T>
50concept AsyncResource = requires(T& resource) {
51 { execution::run(resource) };
52};
53}
Checks that a type model AsyncResource.
Definition run.h:50
Definition sender.h:11
Definition tag_invoke.h:33
Definition any_storable.h:9
Definition run.h:9
Definition bulk.h:30
constexpr auto run
Obtain access to an async resource.
Definition run.h:40
decltype(di::function::tag_invoke(util::declval< Tag >(), util::declval< Args >()...)) TagInvokeResult
Definition tag_invoke.h:40
constexpr auto SequenceCardinality
Gets the cardinality of a sequence.
Definition get_sequence_cardinality.h:55
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Defines the sequence sender concepts and related CPOs.