如何在不知道参数数量时使用模板

How to use template when number of arguments are not known?

本文关键字:数数 不知道 参数      更新时间:2023-10-16

我参考了这个链接来满足我的要求。但是,当我试图在我的代码中实现相同的,它抛出一个错误。

template<typename T, typename... Args>
void fun(T t, Args... args)
{
    cout << t;
}
int main()
{
    fun(1, 2.0, "Ranjan", "hi");//Error happens here
return 0;
}

fun()处的误差为template<class T, <error type>>

这里出了什么问题?

VS2010不支持可变模板。参见c++ 11特性。根据该页面,VS2012也不支持它,所以升级目前不是一个解决方案。

搜索c++03 mimic可变变量模板以确定是否有替代方案(来自本网站的一个示例:如何实现"可变变量模板";与pre-c c++ 0 x (VS2008) ?)。

问题是您只使用了第一个模板参数,而没有使用其他模板参数。c++警告清楚地解释了这一点。

这个例子使用所有参数,并添加一个没有参数的函数:

#include <iostream>
void fun()
{
    std::cout<<std::endl;
}
template<typename T, typename... Args>
void fun(T t, Args... args)
{
    std::cout << t;
    fun(args...);
}
int main()
{
    fun(1, 2.0, "Ranjan", "hi");//Error happens here
}
相关文章: