我正在阅读“C++17 - The Complete Guide”一书,我在第 107 页和第 108 页遇到了关于 C++17 中折叠表达式的示例:
template<typename First, typename... Args>
void print(First first, const Args&... args)
{
std::cout << first;
auto outWithSpace = [](const auto& arg)
{
std::cout << " " << arg;
};
(..., outWithSpace(args));
std::cout << "\n";
}
作者有什么理由不能这样做(没有将第一个参数与其余参数分开,也没有额外的打印空间!):
template<typename... Types>
void print(Types const&... args)
{
([](const auto& x){ std::cout << x << " "; }(args), ...);
std::cout << "\n";
}