Я немного искал несколько вариационных шаблонов, и я нашел то, что хотел бы сделать, но я не знаю, возможно ли это или нет.Variadic Typenames in Template Functions
Грубое представление о том, что я пытаюсь выполнить, - это класс шаблонов, который выполняет определенные операции в зависимости от того, какой тип объекта хранится в нем. Я хотел бы иметь возможность обрабатывать наследование, поэтому класс типа «Производный» будет включен в операцию, которая имеет дело только с базовым объектом. Я понял, что вариационные шаблоны - это то, что мне нужно, я просто не могу заставить их работать, как я хочу.
В принципе, я хотел бы знать, можете ли вы сделать вариационную функцию, которая принимает переменное число имен типов вместо переменного количества аргументов.
Вот то, что я до сих пор:
template <typename T>
void DoesNotWork()
{
//Do stuff
}
template <typename T, typename ...Args>
void DoesNotWork()
{
//Do stuff
DoesNotWork<Args...>();
}
Однако, поскольку обе функции имеют одинаковое число аргументов, он выдает ошибку «неоднозначной функции ссылочный». Если я удаляю верхнюю функцию, последний рекурсивный вызов пытается вызвать «DoNotWork <>()», который не имеет определения.
Как бы я это сделал? Или это невозможно?
Спасибо! Это именно то, что мне нужно. – JubileeTheBear
@JubileeTheBear, рад, что смогу помочь. –