diff --git a/src/vt/messaging/active.h b/src/vt/messaging/active.h index 3d9db3504a..ffd42ca3b9 100644 --- a/src/vt/messaging/active.h +++ b/src/vt/messaging/active.h @@ -767,7 +767,7 @@ struct ActiveMessenger : runtime::component::PollableComponent */ template PendingSendType send(NodeType dest, Params&&... params) { - using Tuple = typename std::decay>::type; + using Tuple = DecayTuple>; using MsgT = ParamMsg; auto msg = vt::makeMessage(std::forward(params)...); auto han = auto_registry::makeAutoHandlerParam(); diff --git a/src/vt/messaging/param_msg.h b/src/vt/messaging/param_msg.h index db35ec0c5d..37082f0990 100644 --- a/src/vt/messaging/param_msg.h +++ b/src/vt/messaging/param_msg.h @@ -67,6 +67,14 @@ struct ParamMsg : vt::Message { } }; + +template +constexpr auto decayTypes(std::tuple const&) + -> std::tuple>...>; + +template +using DecayTuple = decltype(decayTypes(std::declval())); + }} /* end namespace vt::messaging */ #endif /*INCLUDED_VT_MESSAGING_PARAM_MSG_H*/ diff --git a/src/vt/registry/auto/auto_registry_general.h b/src/vt/registry/auto/auto_registry_general.h index 1cb9d9abf6..3fac996864 100644 --- a/src/vt/registry/auto/auto_registry_general.h +++ b/src/vt/registry/auto/auto_registry_general.h @@ -159,7 +159,7 @@ template struct FunctorAdapterParam { using FunctionPtrType = F; using ObjType = SentinelObject; - using MsgType = messaging::ParamMsg>; + using MsgType = messaging::ParamMsg>>; static constexpr FunctionPtrType getFunction() { return f; }