Ist es möglich, den Typ der Argumente in einem Variadic-Konstruktor zu beschränken?Wie kann ich einen C++ - Konstruktor erstellen, der eine variable Zahl von int akzeptiert
Ich möchte in der Lage sein, zum Ausdruck bringen
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...)
{
}
};
bearbeiten Absicht zu klären:
Was ich erreichen möchte ist, Daten in einen Konstruktor übergeben zu speichern (Konstanten bei der Kompilierung bekannt) in ein statisches Array.
, so gibt es einige andere
template<int ...values>
struct Z
{
static int data[sizeof...(values)];
};
template<int ... values>
int Z<values...>::data[sizeof...(values)] = {values...};
und im Konstruktor von X würde ich Z wie diese verwenden möchten:
class X {
template<int ... Args> X(Args...)
{
Z<Args...>::data // do stuff with data
}
};
Ist das möglich, unser muss ich integer_sequence benutzen?
Sind Sie sicher, dass OPs 'Kompilierzeitkonstanten sind? – Barry
@Barry - Ja, sie sind zur Kompilierzeit bekannt! –
@StaffanGustafsson - Das wäre nützliche Informationen in Ihrer Frage gewesen. –