Я не понимаю, почему это не работает. Может ли кто-то, кто разбирается в шаблонах и сворачивании вариантов, объясняет, что происходит и дает решение, которое действительно работает?
#include <iostream>
#include <string>
template <typename... Args>
void print(Args... args)
{
std::string sep = " ";
std::string end = "\n";
(std::cout << ... << sep << args) << end;
}
int main()
{
print(1, 2, 3);
}
Он должен распечатать каждый из аргументов с пробелом между ними и новой строкой в конце. Он работает, если вы удалите sep <<
, но тогда нет места между каждым аргументом при его печати.