#include <iostream>
//provide an ordinary function to end recursion
void print ()
{
}
template<typename T, typename... Types>
void print (T firstArg, Types... args)
{
std::cout << firstArg << "\n"; // printing the first argument
print(args...); // printing the rest of the argument by calling print()
}
int main()
{
print(1, 2, 3, "some string literal");
return 0;
}