【问题标题】:How to specialize a class template for a tuple when variadic template arguments are not supported?当不支持可变参数模板参数时,如何为元组专门化一个类模板?
【发布时间】:2013-10-02 15:06:42
【问题描述】:

我有一个类模板

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

当 T 是一个元组时,我想专门化它。我想我可以做到这一点

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

但是,我的编译器不支持可变参数模板参数,怎么办?

【问题讨论】:

  • 如果你的编译器不支持可变参数模板,它如何支持元组?这就是你必须模仿的。
  • 你在使用 VS 2012 吗?检查这个:stackoverflow.com/questions/13238408/…
  • 我正在使用 VC2012 和 VC11

标签: c++ visual-c++ tuples template-specialization


【解决方案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>>
{...};

...等等,直到您需要支持的元组元素的最大数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多