О грамматике шаблонного класса

#c #templates #template-specialization #parameter-pack

#c #шаблоны #шаблон-специализация #пакет параметров

Вопрос:

Я хочу спросить кое-что о классе шаблонов. Я знаю основы, такие как:

 template<typename X, typename Y>
class tmp{
...
}
 

Однако в начальном файле моего задания по программированию я увидел новый формат как:

 template<typename X, typename... Y>
class tmp<std::tuple<Y...>,X>{
...
}
 

Здесь я знаю, что «…» — это пакет параметров, но почему после имени класса стоит еще один «< >»??

Комментарии:

1. Специализация.

Ответ №1:

Это :

 template<typename X, typename... Y>
class tmp<std::tuple<Y...>,X>{
...
}
 

это обозначение, чтобы сказать:

У нас есть шаблон с параметром X и пакетом параметров Y . Класс tmp — это шаблонный класс, который использует пакет параметров Y в tuple переменной и X в качестве простой переменной шаблона.

Однако это специализация шаблона.