Reference-Aware Algorithms - #2153
Open
RobertLeahy wants to merge 15 commits into
Open
Conversation
Several headers in exec depend on __storage.hpp.
Allows for template arguments deduced from a completion, for example in: template<typename... Args> void set_value(Args&&...); To be used to determine which completion signature such a completion corresponds to. See P4288.
Provides a turnkey, reference-aware way to store completion signatures for later examination or transmission. See P4288. Note that this implementation diverges from the implementation described in P4288. In order to remain device compatible this implementation stores a __tuple rather than a std::tuple. Therefore storage_for_completion_signature::arguments cannot be provided (since it returns a reference to the directly stored std::tuple, which doesn't exist in this implementation). Moreover to support algorithms which aim to be usable on host and device the implementation in this commit provides both storage_for_completion_signature::forward_arguments and ::__forward_arguments where the latter returns a __tuple and can therefore be marked as being device compatible.
See P4288.
See P4288.
In addition to adding reference awareness also fixes (and brings under test) a previous defect: If decay-copying the result datums threw the successor operation was previously skipped.
See P4288. Also brings the implementation into alignment with the standard: The standard specifies that if storage the value result datums throws the schedule operation is started whereas the previous implementation delivered such a failure inline.
See P4288.
See P4288.
No longer used in favor of storage_for_completion_signatures (which is reference aware).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements Stop the Decay P4288R0.
Also contains the following fixes:
continues_onnow implements the standard behavior of scheduling when storing the result datums of the predecessor throwsfinallynow runs the successor even if storing the result datums throwsDoes not fully implement P4288R0's design for
storage_for_completion_signaturebecausestd::tupleis not device compatible.