Понимание Вариадических Шаблонов - PullRequest
0 голосов
/ 03 октября 2019

Попытка понять этот бит кода с помощью шаблонов с переменными числами:

template <typename... T>
struct FooGroup;

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

Я знаю, что шаблоны с переменными числами позволяют передавать неизвестный тип неизвестного количества. Тем не менее, это смущает меня. Кто-нибудь может пролить свет?

1 Ответ

0 голосов
/ 03 октября 2019

Этот код

template <typename... T>
struct FooGroup;

объявляет FooGroup как struct, который получает список переменных типа шаблона шаблона.

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... - это еще один вариационный список параметров шаблона)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...