Wie drucke ich die Argumente einer Funktion mit einer variablen Vorlage aus?

In diesem Beispiel wird eine allgemeine variadische Vorlage und Funktion verwendet. Ich möchte die Argumente ausdrucken, die an übergeben wurdenf:

#include <iostream>

template <typename T>
void print(T t) {
   std::cout << t << std::endl;
}

template <typename...T>
void f(T &&...args) {
   print(args...);
   f(args...);
}

int main() {

    f(2, 1, 4, 3, 5);

}

Aber ich erhalte die folgenden Fehler:

Kompilierung mit Fehlern beendet:
source.cpp: Zur Instanziierung von 'void f(T ...) [mitT = {int, int, int, int, int}] ':
source.cpp: 16: 20: von hier aus erforderlich
source.cpp: 10: 4: error: keine passende Funktion für call to 'print(int&, int&, int&, int&, int&)'
source.cpp: 10: 4: note: kandidat ist:
source.cpp: 4: 6: note:template<class T> void print(T)
source.cpp: 4: 6: note: Abzug / Ersetzung von Vorlagenargumenten fehlgeschlagen: source.cpp: 10: 4: note: Kandidat erwartet 1 Argument, 5 angegeben

Dies ist tatsächlich das erste Mal, dass ich verschiedene Funktionen verwende, und ich verstehe nicht genau, wie ich sie gut verwende. Ich verstehe auch nicht, warum das nicht funktioniert und was ich tun kann, um es zu verbessern.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage