Я хотел бы сделать
template<typename... ArgTypes> void print(ArgTypes... Args)
{
print(Args)...;
}
И пусть это будет эквивалентно этой довольно объемной рекурсивной цепочке:
template<typename T, typename... ArgTypes> void print(const T& t, ArgTypes... Args)
{
print(t);
print(Args...);
}
за которым следуют явные однопараметрические специализации для каждого типа, который я хотел бы распечатать.
"Проблема" с рекурсивной реализацией заключается в том, что создается много избыточного кода, поскольку каждый рекурсивный шаг приводит к новой функции аргументов N-1
, тогда как код, который я хотел бы иметь, будет генерировать только код для единственная функция N
-arg print
и имеют не более N
специализированные функции print
.