Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参数数量未知时如何使用模板?_C++_Templates_Arguments - Fatal编程技术网

C++ 参数数量未知时如何使用模板?

C++ 参数数量未知时如何使用模板?,c++,templates,arguments,C++,Templates,Arguments,我参考了这个以满足我的要求。 但当我试图在代码中实现同样的功能时,它抛出了一个错误 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; } 模板 虚无乐趣(T T

我参考了这个以满足我的要求。 但当我试图在代码中实现同样的功能时,它抛出了一个错误

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;
}
模板
虚无乐趣(T T,Args…Args)
{

cout问题是您只使用了第一个模板参数,而没有使用其他模板参数。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
}
#包括
虚无乐趣()
{

问题是您只使用了第一个模板参数,而没有使用其他模板参数。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
}
#包括
虚无乐趣()
{

std::coutVS2010不支持可变模板。请参阅。根据该页面,VS2012也不支持可变模板,因此升级目前不是解决方案


搜索c++03模拟可变模板以确定是否有替代方案(此网站的一个示例:)。

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


搜索c++03模拟变量模板以确定是否有替代方案(此网站的一个示例:)。

为我编译良好(带有一些警告),执行良好。错误是什么?使用g++()编译良好。您使用的编译器是什么?如何使用?变量模板在c++11中添加的位置。是否启用了c++11标志?(例如,
-std=c++11
)?@iammilind:我正在使用visual studio 2010 ultimateedition@RasmiRanjanNayak,它不支持可变模板,只支持c++11功能的一个子集。为我编译良好(带有一些警告),执行良好。出现什么错误?使用g++()编译良好。您使用的是什么编译器以及如何使用?在c++11中添加的可变模板。您是否启用了c++11标志?(例如
-std=c++11
)?@iammilind:我使用的是visual studio 2010 ultimateedition@RasmiRanjanNayak,它不支持可变模板,只支持c++11功能的一个子集。