Как распечатать аргументы функции, используя шаблон переменной?

В этом примере используется общий шаблон и функция переменной. Я хочу распечатать аргументы, переданныеf:

#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);

}

Но я получаю следующие ошибки:

Compilation finished with errors:
source.cpp: In instantiation of 'void f(T ...) [with T = {int, int, int, int, int}]':
source.cpp:16:20: required from here
source.cpp:10:4: error: no matching function for call to 'print(int&, int&, int&, int&, int&)'
source.cpp:10:4: note: candidate is:
source.cpp:4:6: note: template<class T> void print(T)
source.cpp:4:6: note: template argument deduction/substitution failed: source.cpp:10:4: note: candidate expects 1 argument, 5 provided

На самом деле это мой первый раз, когда я использую функции с переменными числами, и я не совсем понимаю, как их правильно использовать. Я также не понимаю, почему это не работает, и что я могу сделать, чтобы помочь этому.

Ответы на вопрос(2)

Ваш ответ на вопрос