diff --git a/src/vt/registry/auto/auto_registry_general.h b/src/vt/registry/auto/auto_registry_general.h index c765cbd0eb..a4e06c24c6 100644 --- a/src/vt/registry/auto/auto_registry_general.h +++ b/src/vt/registry/auto/auto_registry_general.h @@ -78,13 +78,13 @@ static inline auto proxyOperatorToNewInstanceReg(Args... args) { /// MULTIPLE INSTANCES of the type will be created and discarded. /// This cannot be used for a stateful instance. /// This is an implementation detail that could be reconsidered. -template +template struct FunctorAdapterArgs { - using FunctionPtrType = void (*)(Args...); + using FunctionPtrType = void (*)(ArgsT...); using ObjType = ObjTypeT; static constexpr FunctionPtrType getFunction() { - return &proxyOperatorToNewInstanceReg; + return &proxyOperatorToNewInstanceReg; } static std::string traceGetEventType() { @@ -97,12 +97,15 @@ struct FunctorAdapterArgs { static std::string traceGetEventName() { using TE = vt::util::demangle::TemplateExtract; using DU = vt::util::demangle::DemanglerUtils; - auto args = DU::join(",", TE::getTypeNames()); + std::vector arg_types = { + TE::getTypeName()... + }; + auto args = DU::join(",", arg_types); return DU::removeSpaces("operator(" + args + ")"); } static NumArgsType getNumArgs() { - return sizeof...(Args); + return sizeof...(ArgsT); } }; diff --git a/src/vt/utils/demangle/demangle.h b/src/vt/utils/demangle/demangle.h index 0592d7fe3c..783e848db8 100644 --- a/src/vt/utils/demangle/demangle.h +++ b/src/vt/utils/demangle/demangle.h @@ -129,32 +129,6 @@ struct TemplateExtract { return lastNamedPfType(prettyFunctionForValuePtr(), "PF_VALUE_NAME"); } - // 2+ args - template - static void getTypeNamesHelper(std::vector & target) { - target.push_back(getTypeName()); - getTypeNamesHelper(target); - } - - // 1 args (shouldnt be needed.. avoids Clang 9 compiler crash) - template - static void getTypeNamesHelper(std::vector & target) { - target.push_back(getTypeName()); - } - - // 0 args - void getTypeNamesHelper(std::vector & target) { - } - - /// Return the type names of T..., as a sequence of strings. - /// Requires compiler extension support. - template - static std::vector getTypeNames() { - std::vector result; - getTypeNamesHelper(result); - return result; - } - /// Given a string like 'a::b::c', return the namespace of 'a::b'. /// Removes leading '&', if present (as it appears for 'values representing types'). /// Does not strip out extra template parameterization artifacts.