C ++专门用于可变参数模板内的可变参数模板

时间:2016-07-06 11:50:09

标签: c++ templates

如何使用可变参数模板参数在具有可变参数模板参数的类中专门化类?即:

template < typename ... >
struct test_class
{
    template < typename ... >
    struct s { };
};

template < >
template < typename ... ts >
struct test_class< ts ... >::s< int > { }; // doesn't work

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

template <typename...>
struct OutsideS {
    // ...
};

template </* ... */>
struct OutsideS</* ... */> {
    // ...
};

template <typename... Types>
struct TestClass {
    template <typename... OtherTypes>
    using S = OutsideS<OtherTypes...>;
};

无法以嵌套方式对其进行专门化,但您可以在其他位置专门化嵌套模板。