C++ 理解可变模板

C++ 理解可变模板,c++,templates,variadic-templates,C++,Templates,Variadic Templates,尝试使用可变模板理解这段代码: template <typename... T> struct FooGroup; template <typename... FooTypes, typename... BarTypes> struct TEST<FooGroup<FooTypes...>, BarGroup<BarTypes...>> 模板 结构组; 模板 结构测试 我知道可变模板允许您传入未知类型的未知数量。然而,这让我感到困

尝试使用可变模板理解这段代码:

template <typename... T>
struct FooGroup;

template <typename... FooTypes, typename... BarTypes>
struct TEST<FooGroup<FooTypes...>, BarGroup<BarTypes...>>
模板
结构组;
模板
结构测试
我知道可变模板允许您传入未知类型的未知数量。然而,这让我感到困惑。有人能解释一下吗?

这段代码

template <typename... T>
struct FooGroup;
是模板专门化的一部分

我假设
TEST
声明如下

template <typename, typename>
struct TEST;
模板
结构测试;
因此,接收两个模板类型参数

template <typename... FooTypes, typename... BarTypes>
struct TEST<FooGroup<FooTypes...>, BarGroup<BarTypes...>>

template <typename... FooTypes, typename... BarTypes>
struct TEST<FooGroup<FooTypes...>, BarGroup<BarTypes...>>
模板
结构测试

如果第一个模板参数的形式为
FooGroup
(其中
FooTypes…
是模板参数的可变列表),并且第二个模板参数的形式为
BarGroup
(我假设
BarGroup
几乎被定义为
FooGroup
BarTypes…
是模板参数的另一个可变列表)

所以基本上
FooGroup
只是一个声明,表明它在这种情况下接受了一个可变的模板参数列表,即
FooTypes
。有必要这样做的时候吗?@alittlebirdy如果不了解
FooGroup
BarGroup
,以及
测试
,很难回答这个问题使用它们的模板参数。