【发布时间】:2019-11-05 12:25:12
【问题描述】:
函数/类使用参数包时是否可以有其他模板参数?
我尝试了简单的求和函数。我想使用template Printer 类打印一些东西。怎么做?如何告诉编译器特别“标记”第一个参数......或者有一些解决方法。
下面的代码会产生错误。
#include <iostream>
template <typename T>
double sum(T t)
{
return t;
}
template <typename Printer, typename T, typename... Rest>
double sum(Printer printer, T t, Rest... rest)
{
printer.print();
return t + sum(rest...);
}
struct P
{
void print() { std::cout << "= " << std::endl; }
};
int main()
{
P printer;
std::cout << sum(printer, 2, 3, 4.1) << std::endl;
return 0;
}
【问题讨论】:
-
您想为每个成员打印一些东西吗?还是只打印一次?
-
@StoryTeller-UnslanderMonica 没有。只有一次。我知道这是愚蠢的例子,但我试图让它变得简单。换句话说,我想进行参数扩展,除了第一个......或类似的东西。
标签: c++ templates c++14 metaprogramming variadic-templates