actions_base: integrate reflect_action with basic_action#7281
Open
Priyanshi507 wants to merge 2 commits into
Open
actions_base: integrate reflect_action with basic_action#7281Priyanshi507 wants to merge 2 commits into
Priyanshi507 wants to merge 2 commits into
Conversation
reflect_action<F> now inherits from: basic_action<detail::plain_function, func_type, reflect_action<F>> This provides all typedefs required by transfer_action: component_type, derived_type, result_type, arguments_type, local_result_type, remote_result_type, direct_execution, etc. Uses two-step workaround for GCC/Clang restriction on splice expressions as template arguments: using func_type = [:std::meta::type_of(F):]; // in helper basic_action<..., func_type, ...> // then use alias get_action_name() now returns HPX format 'plain action(app::compute)' matching make_plain_action_name output. invoke() calls func_ptr with forwarded arguments. Signed-off-by: Priyanshi507 <hiiuiuiabi@gmail.com>
- get_action_name() now takes lva argument (nullptr in tests) - Name format updated to 'plain action(app::compute)' matching make_plain_action_name output Signed-off-by: Priyanshi507 <hiiuiuiabi@gmail.com>
Up to standards ✅🟢 Issues
|
Collaborator
|
Can one of the admins verify this patch? |
Contributor
Author
|
@hkaiser @isidorostsa @SAtacker Opened PR #7281 — integrates \reflect_action // helper extracts func_type first
template <std::meta::info F>
struct reflect_action_base {
using func_type = [:std::meta::type_of(F):];
};
// then use alias in inheritance
template <std::meta::info F>
struct reflect_action
: basic_action<detail::plain_function,
typename reflect_action_base<F>::func_type,
reflect_action<F>>Also updates PR #7280 dependency — once this merges, |
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.
Summary
This PR makes
reflect_action<F>a proper HPX action by inheriting frombasic_action<detail::plain_function, R(Ps...), reflect_action<F>>.Problem
PR #7280 showed that
reflect_actionwas missing required typedefs(
component_type,result_type,arguments_type, etc.) thattransfer_actiondepends on. These come frombasic_action.Solution
Two-step workaround for compiler restriction on splice expressions
as template arguments:
What this enables
reflect_actionnow provides all typedefstransfer_actionrequires,making it usable in HPX's full distributed invocation chain.
Depends on
PR #7266 (merged) —
reflect_actionbase templateChecklist