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 mimic variadic templatesを検索して、代替手段があるかどうかを判断します (このサイトの例: How to implement "Variadic Template" with pre-c++0x(VS2008)? )。

于 2013-05-15T11:29:19.150 に答える
1

問題は、他のテンプレート引数ではなく、最初の引数のみを使用していることです。g++ 警告はそれを明確に説明しています。

この例では、すべての引数を使用し、引数なしの関数を追加します。

#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 に答える