Для того, чтобы иметь шаблон c, вам нужен параметр шаблона c. Это выглядит как
template <typename... VariadicTypeParater>
// or
template <some_type... VariadicNonTypeParater>
Применение этого к вашей функции даст вам
template<typename T, typename... Chars>
void despecialize(const T& original,
T& totransform,
const int& charnum,
const Chars&... charother)
{
despecialize(original, totransform, charnum);
despecialize(original, totransform, charother...);
}
Хотя это позволит передавать любой тип для Chars
вместо int
. Чтобы ограничить это, вам нужно добавить SFINAE, используя enable_if_t
нетипичный параметр шаблона, такой как
template <typename T,
typename... Chars,
std::enable_if_t<(std::is_same_v<Chars, int> && ...), bool> = true>
void despecialize(const T& original,
T& totransform,
const int& charnum,
const Chars& charother...)
{
despecialize(original, totransform, charnum);
despecialize(original, totransform, charother...);
}