Мне было интересно, можно ли захватить чередующийся шаблон параметров, используя пакет параметров. Например,Пакеты параметров шаблона Variadic с чередующимися типами
template<typename T, size_t U, typename... Args>
class foo<T, U, Args...>
{
public:
foo() : my_T(nullptr), my_U(U) {}
private:
T* my_T;
size_t my_U;
foo<Args...> my_next_foo;
}
Так что это не сработает, поскольку Args - это пакет параметров только типов. Есть ли способ изменить это, чтобы шаблон типа T, size_t U мог быть правильно захвачен в вариационном шаблоне? Благодаря
Да.Возьмите пары типа и значения как список типов. – Columbo
и вообще (когда ваш шаблон не повторяется), общий способ передачи аргументов, отличных от типа, заключается в помещении их внутри класса. Примеры включают 'std :: true_type',' std :: integ_constant' и т. Д. – davidhigh