Implement P3149R11 and P3815R1#1713
Conversation
db2f61a to
9327406
Compare
|
/ok to test fd9d04b |
fd9d04b to
707aed3
Compare
|
The latest push includes an implementation of I have also tried to address the build failures on the previous iteration, but I don't have a local test environment for the failing build types so I haven't tested the fixes locally, other than to confirm that they still build with my local Clang (i.e. |
707aed3 to
66f394c
Compare
|
Rebased on #1717. |
96d4661 to
f786c00
Compare
|
/ok to test f786c00 |
67262ee to
97d79ee
Compare
|
/ok to test 97d79ee |
97d79ee to
95d10a7
Compare
|
I managed to get GCC 12 installed on my Mac and it repro'd the ICE and the build failure in |
52e1755 to
521d849
Compare
|
|
521d849 to
cc867f4
Compare
|
/ok to test cc867f4 |
a1dd153 to
9263dab
Compare
|
I think I've fixed the build breaks in old gcc, nvc++, and MSVC. Getting a repro of the gcc 11 builds was quite a pain—I can't figure out how to get gcc 11 to run properly on macOS Tahoe so I had to use I've updated |
9263dab to
254887d
Compare
|
Pull the guts of |
254887d to
f78a329
Compare
|
Do some template hoisting and renaming, and replace a single |
f78a329 to
e6db1ed
Compare
This diff adds a definition for `concept stdexec::scope_association` plus tests confirming it accepts and rejects the expected things.
This diff adds a definition for `concept stdexec::scope_token` plus tests confirming it accepts and rejects the expected things. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
This diff defines `stdexec::associate` and adds some initial tests to confirm it works properly. Still a work in progress.
This diff defines `stdexec::__stop_when` as the implementation of _`stop-when`_ and adds tests to validate the algorithm. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
This diff adds `stdexec::spawn` and its tests. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
This diff adds `stdexec::simple_counting_scope` and `stdexec::counting_scope` plus tests for both. The tests found a spec bug that's been filed as an LWG issue. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
This diff adds `stdexec::spawn_future` and some basic tests. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
This diff probably implements the intended design that stop requests sent to a started future-sender get forwarded to the spawned work. The existing tests still pass, but I don't have new tests to confirm the new behaviour. Co-authored-by: Eric Niebler <eniebler@nvidia.com>
Wrap the call to `std::numeric_limits<std::size_t>::max` in parens so that Microsoft's `max` macro doesn't get in the way.
* Eliminate camel case * Uglify all identifiers * `s/\bassert\b/STDEXEC_ASSERT/g` * Take the address of objects with `std::addressof`
31ccf35 to
2775f7c
Compare
|
/ok to test 2775f7c |
Take @ericniebler's suggestion and use `__mapply_q` in `__spawn_future.hpp`.
Take @ericniebler's suggestion and replace a constrained overload set with a single overload with an internal cascade of constexpr ifs to control the environment selection logic in `__spawn_common.hpp` and to control the stop token construction in `__stop_when.hpp`.
Replace the pure-virtual function in `__spawn_state_base` with a function pointer.
Replace the pure-virtuals in `__try_cancelable` and `__spawn_future_state_base` with function pointers.
Take @ericniebler's suggestion for a better work-around for what might be a spec bug in howthe base class of `__spawn_future_state` is computed.
9bd9635 to
afd6e39
Compare
Since the stdexec-specific `__variant` type has an uninitialized state, we don't need the `__monostate` variant option to represent "uninitialized". Delete it.
|
There are still a few things I'd like to improve, but this is probably landable. |
|
/ok to test 9199dcc |
Explicitly specify the template type parameters when constructing a `__fused_token` in `__make_token_fn`.
Uncollide with MSVC's `__nothrow` attribute by renaming `__nothrow` to `__non_throwing`.
|
/ok to test 892f971 |
|
/ok to test bdb7f09 |
|
/ok to test 3303429 |
This PR will implement P3149R11 patched with P3815R1.
concept scope_associationconcept scope_tokenassociatealgorithmstop-whenalgorithmspawnalgorithmspawn_futurealgorithmsimple_counting_scopecounting_scope