88namespace ex = beman::execution26;
99
1010template <typename Receiver>
11- struct just_op_state
12- {
11+ struct just_op_state {
1312 using operation_state_concept = ex::operation_state_t ;
1413 std::remove_cvref_t <Receiver> rec;
1514 std::pmr::string value;
1615
1716 template <typename R>
1817 just_op_state (R&& r, std::pmr::string&& value)
19- : rec(std::forward<R>(r))
20- , value(std::move(value), ex::get_allocator(ex::get_env(rec)))
21- {
22- }
18+ : rec(std::forward<R>(r)), value(std::move(value), ex::get_allocator(ex::get_env(rec))) {}
2319
2420 void start () & noexcept { ex::set_value (std::move (rec), std::move (value)); }
2521};
2622
27- struct test_receiver
28- {
23+ struct test_receiver {
2924 using receiver_concept = ex::receiver_t ;
3025 auto set_value (auto &&...) && noexcept -> void { std::cout << " set_value\n " ; }
3126 auto set_error (auto &&) && noexcept -> void { std::cout << " set_error\n " ; }
@@ -36,36 +31,31 @@ static_assert(ex::receiver<test_receiver>);
3631static_assert (ex::operation_state<just_op_state<test_receiver>>);
3732
3833template <typename T>
39- struct just_sender
40- {
41- using sender_concept = ex::sender_t ;
34+ struct just_sender {
35+ using sender_concept = ex::sender_t ;
4236 using completion_signatures = ex::completion_signatures<ex::set_value_t (T)>;
4337
4438 T value;
45- template <ex::receiver Receiver>
46- auto connect (Receiver&& r) && -> just_op_state<Receiver> { return { std::forward<Receiver>(r), std::move (value) }; }
39+ template <ex::receiver Receiver>
40+ auto connect (Receiver&& r) && -> just_op_state<Receiver> {
41+ return {std::forward<Receiver>(r), std::move (value)};
42+ }
4743};
4844
4945static_assert (ex::sender<just_sender<std::pmr::string>>);
5046static_assert (ex::sender_in<just_sender<std::pmr::string>>);
5147
52- int main ()
53- {
54- auto j = just_sender{std::pmr::string (" value" )};
55- auto t = std::move (j) | ex::then ([](std::pmr::string v){ return v + " then" ; });
56- auto w = ex::when_all (std::move (t));
57- auto t2 = std::move (w) | ex::then ([](auto && v){ std::cout << " got " << v << " \n " ; });
58- auto e = ex::detail::write_env (
59- std::move (t2),
60- ex::detail::make_env (
61- ex::get_allocator, std::pmr::polymorphic_allocator<>()
62- )
63- );
48+ int main () {
49+ auto j = just_sender{std::pmr::string (" value" )};
50+ auto t = std::move (j) | ex::then ([](std::pmr::string v) { return v + " then" ; });
51+ auto w = ex::when_all (std::move (t));
52+ auto t2 = std::move (w) | ex::then ([](auto && v) { std::cout << " got " << v << " \n " ; });
53+ auto e = ex::detail::write_env (std::move (t2),
54+ ex::detail::make_env (ex::get_allocator, std::pmr::polymorphic_allocator<>()));
6455
6556 auto o = ex::connect (std::move (e), test_receiver{});
6657 std::cout << " before start\n " ;
6758 ex::start (o);
6859 // auto r = ex::sync_wait(std::move(w) | ex::then([](auto&&){}));
6960 std::cout << " after start\n " ;
7061}
71-
0 commit comments