-
-
Notifications
You must be signed in to change notification settings - Fork 430
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add P0443r14 executor and a a few P1897 algorithms #5053
Conversation
e739609
to
046b6ec
Compare
retest |
046b6ec
to
9aef831
Compare
9aef831
to
263c2c9
Compare
68648e6
to
638d57b
Compare
c7eee30
to
c38672c
Compare
9b1de25
to
d7d32af
Compare
b6e4784
to
35f3a0e
Compare
35f3a0e
to
5b71784
Compare
tag_priority{,_noexcept} extends the tag_fallback{,_noexcept} helper structs to also allow overriding user-defined tag_invoke overloads. tag_priority{,_noexcept} will prefer tag_override_invoke overloads if available, then tag_invoke overloads if available, and last tag_fallback_invoke overloads if available. This helper struct is useful for implementing P0443 customization points which prefer member functions whenever available, even if tag_invoke overloads are available. On the other hand they fall back in many cases to default implementations based on other customization points.
Not proposed. Replace with test-specific receivers.
5b71784
to
e00152a
Compare
I welcome reviews on this one. |
e00152a
to
b3c51a7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
Thanks @hkaiser for looking through this! I'm turning this back into a draft because it looks like gcc 7 and 8 are not happy with the changes. I'm not planning on making any further functional changes. |
One question I had was whether we should use |
Absolutely! The P0443 customization points use |
bb03f48
to
cd853ef
Compare
This should now be ok. Let's see if CI agrees. GCC 7 and 8 seemed to be more eager in instantiating templates compared to newer versions of GCC and clang. |
44a0a10
to
2352d97
Compare
- Move enable_ifs to template parameters - Add enable_ifs to some member functions that did not have it - Use enable_if_t instead of enable_if - Change some leftover decay to decay_t - Small fixes to basic_submit test
2352d97
to
1862150
Compare
Adds the remaining CPOs and traits from P0443r14 (see #5045). I've used the fallback implementations from P0443r14 pretty much verbatim, so there might be room for changes here.
Also adds
transform
andsync_wait
as the first algorithms (andwait
,get
for symmetry with the currentfuture
functionality, although these should proably not stay). Also adds asink_receiver
(should be calledvoid_receiver
?).Adds a simple executor for our coroutines based on the new functionality. The
bulk_execute
functionality is incomplete but I'd like to keep it like this for now until the proposal evolves a bit more.Extends
tag_fallback_invoke
withtag_priority_invoke
, which gives three options:tag_override_invoke
which always takes precedence over user-definedtag_invoke
s, then uses user-definedtag_invoke
s, and finally usestag_fallback_invoke
if nothing else matches.@K-ballo (and others interested), I had a need for a type list
transform
andunique
. I'm sure you have a better idea of how to do that efficiently (especiallyunique
), so I'd appreciate your eyes on that (see https://github.com/msimberg/hpx/blob/1fa6ec165d410d0508183cb0e1d532e1840f0cf6/libs/core/type_support/include/hpx/type_support/pack.hpp#L196-L237).Includes #5033.
To do:
traits
namespace (objections?)