【发布时间】:2020-11-17 14:23:33
【问题描述】:
假设我想定义一个 C++ 函数,它在括号内没有输入参数,但在 <> 参数内。我有一个参数包作为输入参数。这意味着我必须编写例如一个函数
int calculate<args...>()
{
return 1 + calculate<some_arg,args...>();
}
还有一个我必须给出的基本案例实现。但是,我遇到了很多编译器错误,因为我不知道如何正确编写这种形式的递归。在上面的函数声明之前我要写什么?
template<int... args>
(如果 args 的数据类型是 int;任何其他数据类型也可以采用类似的方式)?或者我必须写什么来避免编译器错误?我也试过了
template<int some_arg,int... args>
但我也不知道如何处理可变参数模板(如何解压它们)。有什么帮助吗?
编辑:
我对一种特殊情况的尝试
template<bool... dg>
int calculate<0>()
{
return 1;
}
错误信息是:
错误:“
【问题讨论】:
-
请创建minimal reproducible example 并粘贴编译器错误消息。
-
如果你搜索的话,你应该可以在 SO 上找到很多这样的例子。
-
函数模板可能没有部分特化。
标签: c++ templates variadic-templates