#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
в качестве простой переменной шаблона.
Однако это специализация шаблона.