Есть ли простой способ расширить пакет параметров? Я попробовал:
Func<Inputs>()...;
Если вы можете использовать C ++ 17, используя оператор запятой и свертывание шаблона
((void)Func<Inputs>(), ...);
В C ++ 11 / C ++ 14, снова используя оператор запятой, но в контексте инициализации неиспользуемого массива в стиле C, что-то вроде следующего:
template<typename... Inputs>
struct SetStruct{
void Set() {
using unused = int[];
(void)unused { 0, ((void)Func<Inputs>(), 0)... };
}
};
Заметьте, что в обоих случаях я добавил (void)
перед вызовом Func<>()
.
В вашем случае это бесполезно (потому что ваш Func<>()
просто возвращает void
), но это своего рода пояс безопасности в случае функции, которая возвращает объект класса, который переопределяет оператор запятой.