Later versions of stdexec support both tag_invoke and member functions, but the standard will use member functions only. We should try to migrate to use member functions only where it makes sense with reasonable backwards compatibility to the old C++17 implementation in pika.
The following CPOs and customizations can be translated quite simply:
[ ] set_value_t (#1295)
[ ] set_error_t
[ ] set_stopped_t
[ ] start_t
[ ] connect_t
[ ] schedule_t
Sender adaptor customization we currently still do with tag_invoke, but this is not an as straightforward translation. E.g. tag_invoke(bulk_t, thread_pool_scheduler, ...) would need to be translated to transform_sender(thread_pool_scheduler_domain, bulk_sender). We don't have domains implemented for schedulers yet, so we'd need that before tackling this.
Later versions of stdexec support both
tag_invoke
and member functions, but the standard will use member functions only. We should try to migrate to use member functions only where it makes sense with reasonable backwards compatibility to the old C++17 implementation in pika.The following CPOs and customizations can be translated quite simply:
set_value_t
(#1295)set_error_t
set_stopped_t
start_t
connect_t
schedule_t
Sender adaptor customization we currently still do with
tag_invoke
, but this is not an as straightforward translation. E.g.tag_invoke(bulk_t, thread_pool_scheduler, ...)
would need to be translated totransform_sender(thread_pool_scheduler_domain, bulk_sender)
. We don't have domains implemented for schedulers yet, so we'd need that before tackling this.