【发布时间】:2019-12-16 22:30:57
【问题描述】:
我正在阅读“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";
}
【问题讨论】:
-
我想你回答了你自己的问题?你的打印一个额外的空间。
-
@Barry,只是想确保我没有错过本书示例的要点:)
-
简答:否。
标签: c++ c++17 fold-expression