0

我已参考此链接以满足我的要求。但是当我试图在我的代码中实现相同的功能时,它会抛出一个错误。

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>>

这里出了什么问题?

4

2 回答 2

3

VS2010 不支持可变参数模板。请参阅C++11 功能。根据该页面,VS2012也不支持它,因此目前升级不是解决方案。

搜索c++03 模拟可变参数模板以确定是否有替代方案(本网站的一个示例:如何使用 pre-c++0x(VS2008) 实现“可变参数模板”?)。

于 2013-05-15T11:29:19.150 回答
1

The problem is that you are using only the first, and not other template arguments. The g++ warning clearly explains it.

This example uses all arguments, and add a function for no arguments :

#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
}
于 2013-05-15T11:21:54.420 回答