C++ 如何包装;扩展可变模板参数“;?

C++ 如何包装;扩展可变模板参数“;?,c++,templates,c++11,metaprogramming,C++,Templates,C++11,Metaprogramming,C++03允许创建从模板参数继承的模板类: //c++03 结构空类型{}; 模板 类收集器:公共T0、公共T1、公共T2 { }; 模板 类收集器:公共T0、公共T1 { }; 模板 类收集器:公共T0 { }; 所以 typedef收集器X; 方程到 X类:公共A、公共B、公共C{}; C++11使操作更简单: //可变模板-太棒了! 模板 C11_类收集器: 公共课。。。 { }; 包装收集器必须在继承之前包装模板参数: 模板 类包装\u收集器:公共包装、公共包装、公共包装 { }

C++03允许创建从模板参数继承的模板类:

//c++03
结构空类型{};
模板
类收集器:公共T0、公共T1、公共T2
{
};
模板
类收集器:公共T0、公共T1
{
};
模板
类收集器:公共T0
{
};
所以

typedef收集器X;
方程到

X类:公共A、公共B、公共C{};
C++11使操作更简单:

//可变模板-太棒了!
模板
C11_类收集器:
公共课。。。
{
};
包装收集器必须在继承之前包装模板参数:

模板
类包装\u收集器:公共包装、公共包装、公共包装
{
};
模板
类包装\u收集器:公共包装,公共包装
{
};
模板
类包装\u收集器:公共包装
{
};
所以

typedef包装_收集器X;
方程到

X类:公共W,公共W{};

如何通过c++11更轻松地实现包装收集器?

是否可以将
Wrap
强制为空类?那么你可以直接使用

template <template <typename> class Wrap, typename... Types>
class Wrapping_Collector : public Wrap<Types>... {
   //...
};
模板
类包装\u收集器:公共包装。。。{
//...
};

或者,如果双继承链而不是直接多重继承是可以的,则可以使
包装收集器
包装收集器
包装收集器
派生:

模板
类集合;
//正常情况
模板
类收集器
:公共包装\u收集器,包装
{
//...
};
//忽略空类型
模板
类收集器
:公共包装箱
{
//...
};
//基本情况
模板
类包装_收集器{};

我相信您会在C++11中这样做:

// variadic templates - great thing!
template <template <class> class Wrap, class... Classes>
class C11_Wrapping_Collector : public Wrap<Classes>... 
{
};
//可变模板-太棒了!
模板
类C11\u包装\u收集器:公共包装。。。
{
};

我不明白为什么需要包装。由于C++03中缺少可变模板,所以最初不存在
NullType
// variadic templates - great thing!
template <template <class> class Wrap, class... Classes>
class C11_Wrapping_Collector : public Wrap<Classes>... 
{
};