2013-10-02 43 views
3

我有一个类模板当不支持可变参数模板参数时如何为元组专门化一个类模板?

template<class T> 
class A 
{...}; 

,我想专攻它当T是一个元组。我想我能做到这一点

template<class Args...> 
class A<std::tuple<Args...>> 
{...}; 

然而,我的编译器不支持可变参数模板参数,该怎么办呢?

+6

如果编译器不支持可变参数模板,您的编译器如何支持元组?这就是你必须模仿的。 –

+1

你使用VS 2012吗?检查此:http://stackoverflow.com/questions/13238408/variadic-template-in-vs-2012-visual-c-november-2012-ctp – kennytm

+0

我使用VC2012与VC11 – user1899020

回答

1

你可以专门为它每个不同的元数的元组:

// explicit specialization for 0-element tuples 
template<> 
class A<std::tuple<>> 
{...}; 

// partial specialization for 1-element tuples 
template<class Arg> 
class A<std::tuple<Arg>> 
{...}; 

// partial specialization for 2-element tuples 
template<class Arg0, class Arg1> 
class A<std::tuple<Arg0, Arg1>> 
{...}; 

...等等,给你需要支持的元组元素的任何最大数。

相关问题