我有一个类需要根据类模板参数来调整成员 std::function
所采用的参数数量。参数声明如下:
template<char Id, char ... Ids>
class term;
然后在类的主体中,我有一个 std::function
,它需要采用某些数字类型的 1 + sizeof...(Ids)
参数(都是同一类型)。
主体声明如下:
template<char Id, char ... Ids>
class term{
public:
template<typename ... Args>
void operator()(Args &&... args){
fn(std::forward<Args>(args)...);
}
std::function<void(/* whats do? */)> fn;
};
我该如何解决这个问题?
最佳答案
由于您没有说明 fn
的参数类型,我将假设所有 char
。在这种情况下:
std::function<void(char, decltype(Ids)...)> fn;
您可以调整它以使参数具有不同的类型,但如何调整它取决于签名的具体外观。
对于所有相同的数字类型,最简单的调整可能是这样的:
std::function<void(char, decltype(Ids, YourNumericType{})...)> fn;
关于c++ - 模板指定的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289469/