我有以下类型别名:
using VoidFunc = void (*)();
我想像这样定义一个类:
class SomeClass {
public:
template<template<typename Return, typename... Args>... Funcs>
static constexpr typename std::vector<VoidFunc> registerFunctions(Funcs<Return, Args...>... funcs) {
return { ((VoidFunc)(funcs), ...) };
}
};
我知道这是无效的语法,因为在他们的模板组之外是无法解析的Return。Args目标是允许函数registerFunction接受可变数量的具有不同原型的函数。在实际实现中,保留每个函数的类型信息以供其他constexpr函数使用是很重要的。有没有办法在 C++17 或更高版本中实现这一点?