@@ -107,7 +107,7 @@ namespace exec_old {
107107 struct bulk_receiver ;
108108
109109 template <class CvrefSenderId , class ReceiverId , std::integral Shape, class Fun >
110- struct bulk_op_state ;
110+ class bulk_op_state ;
111111
112112 struct transform_bulk {
113113 template <class Data , class Sender >
@@ -430,8 +430,9 @@ namespace exec_old {
430430 pool_.enqueue (op);
431431 }
432432
433- friend void tag_invoke (stdexec::start_t , operation& op) noexcept {
434- op.enqueue_ (&op);
433+ public:
434+ void start () & noexcept {
435+ enqueue_ (this );
435436 }
436437 };
437438
@@ -660,7 +661,7 @@ namespace exec_old {
660661 };
661662
662663 template <class CvrefSenderId , class ReceiverId , std::integral Shape, class Fun >
663- struct static_thread_pool ::bulk_op_state {
664+ class static_thread_pool ::bulk_op_state {
664665 using CvrefSender = stdexec::__cvref_t <CvrefSenderId>;
665666 using Receiver = stdexec::__t <ReceiverId>;
666667
@@ -676,13 +677,9 @@ namespace exec_old {
676677 using inner_op_state = stdexec::connect_result_t <CvrefSender, bulk_rcvr>;
677678
678679 shared_state shared_state_;
679-
680680 inner_op_state inner_op_;
681681
682- friend void tag_invoke (stdexec::start_t , bulk_op_state& op) noexcept {
683- stdexec::start (op.inner_op_ );
684- }
685-
682+ public:
686683 bulk_op_state (
687684 static_thread_pool& pool,
688685 Shape shape,
@@ -692,6 +689,10 @@ namespace exec_old {
692689 : shared_state_(pool, static_cast <Receiver&&>(receiver), shape, fn)
693690 , inner_op_{stdexec::connect (static_cast <CvrefSender&&>(sender), bulk_rcvr{shared_state_})} {
694691 }
692+
693+ void start () & noexcept {
694+ stdexec::start (inner_op_);
695+ }
695696 };
696697
697698} // namespace exec_old
0 commit comments