template<typename... T>
void foo(T... args);
In dem obigen Beispiel wird T
nach §14.5.3 Blähton - (4.1) des Standard.Verhalten eines Funktionsparameter Pack
§14.5.3 - (4.1) - In einem Funktionsparameter-Paket (8.3.5); Das Muster ist die Parameterdeklaration ohne die Ellipse.
Was genau passiert hier? Sagen wir, ich nenne die Funktion mit 3 ganzen Zahlen.
foo(1, 2, 3);
Ist der Parameter Pack wie
erweitertfoo(int arg1, int arg2, int arg3);
wo arg1, arg2, und arg3 sind nur willkürliche Namen vom Compiler gegeben?
Der Standard sagt, wie „das Muster der Parameter-Deklaration ohne die Auslassungspunkte“
Die andere Art und Weise interpretieren ich, dass ist args
bekommt eine einzelne parameter-declartion.Is args
seine eigene Art zu bekommen? Ich habe versucht,
std::cout << typeid(args).name;
, aber das funktioniert nicht, und wirft Compilerfehler. Ich könnte also annehmen, dass es keinen eigenen Typ bekommt. Könnte jemand "blamieren" was hier wirklich passiert und das Verhalten des Funktionsparameter Packs?
Kann der Downvoter erklären, warum die -1? –