Как распечатать аргументы функции, используя шаблон переменной?
В этом примере используется общий шаблон и функция переменной. Я хочу распечатать аргументы, переданные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
На самом деле это мой первый раз, когда я использую функции с переменными числами, и я не совсем понимаю, как их правильно использовать. Я также не понимаю, почему это не работает, и что я могу сделать, чтобы помочь этому.