Можно ли ограничить тип аргументов в вариационном конструкторе?
Я хочу выразить
X x1(1,3,4);
X x2(3,4,5);
// syntax error: identifier 'Args'
class X {
template<int ... Args> X(Args...)
{
}
};
// this works but allows other types than int
class Y {
template<typename ... Args> Y(Args...)
{
}
};
изменить, чтобы уточнить намерение:
Я хочу достичь хранения данных, переданных в конструктор (константы, известные во время компиляции) в статический массив.
поэтому есть и другие
template<int ...values>
struct Z
{
static int data[sizeof...(values)];
};
template<int ... values>
int Z<values...>::data[sizeof...(values)] = {values...};
а в конструкторе X я хотел бы использовать Z следующим образом:
class X {
template<int ... Args> X(Args...)
{
Z<Args...>::data // do stuff with data
}
};
Возможно ли, что мне нужно использовать integer_sequence?