【发布时间】:2012-01-09 18:59:07
【问题描述】:
我想写一个函数模板,它可以接受可变数量的模板参数,并且只打印出类型参数的 typeid().name()。我可以使用类模板中的静态函数来做类似的事情,如下所示:
template<typename...>
struct foo;
template<typename H, typename... T>
struct foo<H, T...> {
static void print() {
std::cout << typeid(H).name() << ", ";
foo<T...>::print();
}
};
template<typename H>
struct foo<H> {
static void print() {
std::cout << typeid(H).name() << "\n";
}
};
int main(void)
{
foo<int, float>::print();
return 0;
}
但是,我无法执行以下操作:
template<typename H, typename... T>
void print() {
std::cout << typeid(H).name() << ", ";
print<T...>();
}
int main(void)
{
print<int, float>();
return 0;
}
我尝试添加以下“基本”案例:
template<typename H>
void print();
和
void print();
都没有用。这样的函数模板怎么写?
【问题讨论】:
-
你收到了什么错误信息?
-
您的课程模板专业化不明确。