如何使用pack作为模板参数实例化专用模板类?

时间:2019-03-22 22:02:37

标签: c++ templates

我从Template with Multiple pack as input parameter看下面的例子。

#include <iostream>
#include <tuple>

// A template to hold a parameter pack.                                                                                                                                                                                                                                                                                                                                                       
template < typename... >
struct Typelist {};

// Declaration of a template with multiple parameter pack.                                                                                                                                                                                                                                                                                                                                    
template< typename TypeListOne                                                                                                                                                                                                                                                                                                                                                                
        , typename TypeListTwo                                                                                                                                                                                                                                                                                                                                                                
        >                                                                                                                                                                                                                                                                                                                                                                                     
struct SomeStruct;

// Specialization of template with multiple parameter packs                                                                                                                                                                                                                                                                                                                                   
template< typename... TypesOne
        , typename... TypesTwo
        >
struct SomeStruct< Typelist < TypesOne... >
                 , Typelist < TypesTwo... >
                 >
{
    // Can use TypesOne... and TypesTwo... how ever                                                                                                                                                                                                                                                                                                                                           
    // you want here. For example:                                                                                                                                                                                                                                                                                                                                                            
    typedef std::tuple< TypesOne... > TupleTypeOne;
    typedef std::tuple< TypesTwo... > TupleTypeTwo;
};

我想知道如何实例化SomeStruct的对象。

1 个答案:

答案 0 :(得分:1)

例如:

SomeStruct <Typelist <char, int, char>,
            Typelist <int, double>> var;