Можно ли ограничить тип аргументов в конструкторе переменных?Как создать конструктор C++, который принимает переменное число int's
Я хочу, чтобы иметь возможность выразить
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?
Вы уверены, что '' '' '' '' '' '' '' '' '' '' '' 'компилируют? – Barry
@Barry - Да, они известны во время компиляции! –
@StaffanGustafsson - Это было бы полезной информацией в вашем вопросе. –