Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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_Boost - Fatal编程技术网

C++ 如何声明可变数量的模板参数?

C++ 如何声明可变数量的模板参数?,c++,templates,boost,C++,Templates,Boost,例如,这是boost::tuple // - tuple forward declaration ----------------------------------------------- template < class T0 = null_type, class T1 = null_type, class T2 = null_type, class T3 = null_type, class T4 = null_type, class T5 = null_type, c

例如,这是
boost::tuple

// - tuple forward declaration -----------------------------------------------
template <
  class T0 = null_type, class T1 = null_type, class T2 = null_type,
  class T3 = null_type, class T4 = null_type, class T5 = null_type,
  class T6 = null_type, class T7 = null_type, class T8 = null_type,
  class T9 = null_type>
class tuple;
//-元组前向声明-----------------------------------------------
模板<
T0类=空类型,T1类=空类型,T2类=空类型,
T3类=零型,T4类=零型,T5类=零型,
T6类=空类型,T7类=空类型,T8类=空类型,
类别T9=空\u类型>
类元组;
正如预期的那样,如果我尝试使用更多的参数,就会出现以下错误

$ g++ vec.cc 
vec.cc: In function 'int main()':
vec.cc:6: error: wrong number of template arguments (12, should be 10)
/usr/include/boost/tuple/detail/tuple_basic.hpp:75: error: provided for 'template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> class boost::tuples::tuple'
vec.cc:6: error: template argument 1 is invalid
vec.cc:6: error: template argument 2 is invalid
vec.cc:6: error: invalid type in declaration before ';' token
$
$g++vec.cc
vec.cc:在函数“int main()”中:
cc:6:错误:模板参数的数量错误(12,应该是10)
/usr/include/boost/tuple/detail/tuple_basic.hpp:75:错误:为“模板类boost::tuples::tuple”提供
vec.cc:6:错误:模板参数1无效
vec.cc:6:错误:模板参数2无效
vec.cc:6:错误:在“;”之前的声明中的类型无效代币
$
有没有一种方法可以声明该类以使其接受任意数量的模板参数?

C++11支持。这些允许您编写:

template<typename ...Args>
class tuple
{
    // ...
};
模板
类元组
{
// ...
};

但是,没有简单的方法来迭代可变模板的参数。有关此问题的几种解决方法,请参阅链接文章。

您的意思是它的行为类似于c++11 std::tuple吗?@juanchopanza:。。。就像支持可变模板的系统中的c++11元组,你是说?例如VS2011不支持可变模板,我认为只要无限不大于5,元组就支持无限类型。@DavidRodríguez Dribea是个好问题。该标准说元组应该支持任意数量的参数,并且头部是模板类元组。因此,我想我指的是c++11标准中的std::tuple。如果希望迭代,可以将可变参数包转换为MPL序列。