rewrite sender-adaptor-closure infra#220
Conversation
ed25811 to
8a21a3c
Compare
dietmarkuehl
left a comment
There was a problem hiding this comment.
Nice! There are few things which may be changed.
|
@dietmarkuehl please also let me know if i should fully qualify names. i'm preparing it anyway, but not sure what to fully qualify. my feedback would be; fully qualifying everything makes things uglier and harder to read. beman/execution should be more readable and easier to follow than stdexec/execution imo. the community really needs a readable implementation to quickly understand the mechanics of this library. fully qualifying names increases cognitive effort. |
My normal style is to qualify everything. To me it makes it visible where a name is coming from. At times it avoids potential ambiguity when looking at the code. The compiler won’t be confused about where a name comes from but the human reader may be. I can, however, see that the qualifaction can make things harder to read for others. Removing the qualification with a script would be trivial nearly (there may be some necessary qualifications, though), adding them back isn’t. The ideal compromise would be a view option to hide them but that assumes tooling. I wouldn’t insist in qualification on PRs but I may add them when working on the code. If there is a broad consensus that there shall be no qualification, I’d follow that. |
e8e5f91 to
c047224
Compare
…gration - Refactor sender-adaptor closure infrastructure around sender_adaptor_closure, adaptor_closure, and composed closure piping. - Migrate adaptor implementations (then, bulk, let, continues_on, associate, on, affine_on) to the closure-based path. - Enforce [exec.adapt.obj] constraints and behavior: pipe equivalence, composition semantics, construction well-formedness, and noexcept propagation. - Expand sender_adaptor_closure tests for uniqueness detection, composition associativity, composed call pattern, partial application well-formedness, and pipe parity. - Deprecate direct detail::sender_adaptor alias in favor of make_sender_adaptor(...) factories and document the direct-use layout break (Adaptor moved into adaptor_closure_binding with [[no_unique_address]] for EBO, pending product_type support). - Apply quality cleanup in sender_adaptor_closure module/header exports and comments. - Add docs in headers.
Move the pipe operator overloads from beman::execution into detail::pipeable so they are found only via ADL through the closure_t base class. This prevents the operators from participating in overload resolution for unrelated types in beman::execution. - Reintroduce beman::execution::detail::pipeable namespace. - Add closure_t tag type as ADL anchor for sender_adaptor_closure - Remove export using of operator| from execution.cppm - Document detail::pipeable namespace in common.hpp
c047224 to
a0c141a
Compare
Resolves #198