首页 > 解决方案 > 了解可变参数模板

问题描述

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

template <typename... T>
struct FooGroup;

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

我知道可变参数模板允许您传入未知类型的未知数量。然而,这让我很困惑。任何人都可以解释一下吗?

标签: c++templatesvariadic-templates

解决方案


这段代码

template <typename... T>
struct FooGroup;

声明FooGroupstruct接收类型模板参数的可变参数列表。

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

是模板专业化的一部分。

我想TEST声明如下

template <typename, typename>
struct TEST;

所以接收两个模板类型参数。

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

如果TEST第一个模板参数在表单中FooGroup<FooTypes...>(其中FooTypes...是模板参数的可变参数列表),并且第二个模板参数在表单BarGroup<BarTypes...>中(我想BarGroup几乎定义为FooGroup并且BarTypes...是模板的另一个可变参数列表,则声明部分特化参数)


推荐阅读