Sas*_*yal 7 c++ syntax fold-expression
在cppreference上,我看到折叠表达式有四种类型,一元右,一元左,二进制右和二进制左。这种折叠表达式的类型是什么?我很难理解它为什么有效。
template <typename Res, typename... Ts>
vector<Res> to_vector(Ts&&... ts) {
vector<Res> vec;
(vec.push_back(ts) ...); // *
return vec;
}
Run Code Online (Sandbox Code Playgroud)
*行中的“ pack”,“ op”和“ init”的值是什么(如果有)?
该示例摘自Bjarne Stroustrup的A C C ++书的第244页,并且似乎在示例中忘记了逗号,因此引起了我的困惑。
bol*_*lov 11
语法无效。它缺少逗号(很可能是拼写错误):
(vec.push_back(ts), ...)
// ^
Run Code Online (Sandbox Code Playgroud)
这样就是“一元对折”:
( pack op ... )
Run Code Online (Sandbox Code Playgroud)
有op是一个逗号。
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |