我想编写一个函数模板,它可以接受可变数量的模板参数,并打印出类型参数的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();
都没有工作。我如何编写这样的函数模板?
是你得到了什么错误讯息? – templatetypedef 2012-01-09 19:14:26
您的班级模板专业化不明确。 – 2012-01-09 19:48:29