【发布时间】:2019-09-03 18:47:57
【问题描述】:
在cppreference,我看到折叠表达式有四种类型,一元右,一元左,二元右,二元左。这个折叠表达式的类型是什么?我很难理解为什么它是有效的。
template <typename Res, typename... Ts>
vector<Res> to_vector(Ts&&... ts) {
vector<Res> vec;
(vec.push_back(ts) ...); // *
return vec;
}
*行中的“pack”、“op”和“init”的值是多少,如果有的话?
这个例子来自 Bjarne Stroustrup 的 A Tour of C++ 书的第 244 页,似乎在例子中忘记了一个逗号,因此我很困惑。
【问题讨论】:
-
你最终得到一堆用逗号分隔的
vec.push_back(...)s? -
是的,我明白了。我想知道这条线如何适合有效折叠表达式的定义。
-
你可以检查this errata,然后你会发现这本书还有很多其他错误,为什么不报告这个错字-
,丢失了? -
@rafix07 我不会将大约 200 页中的 10 个错误称为“很多”
标签: c++ syntax fold-expression