为什么这个C++折叠表达式有效?
Why is this C++ fold expression valid?
在cpp首选项上,我看到有四种类型的折叠表达式,一元右,一元左,二进制右和二元左。这里的折叠表达式是什么类型?我很难理解为什么它是有效的。
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的ATour of C++书的第244页,似乎在示例中忘记了一个逗号,因此我很困惑。
语法无效。它缺少逗号(很可能是错别字(:
(vec.push_back(ts), ...)
// ^
所以它是"一元右折":
( pack op ... )
op
是逗号。
相关文章:
- void() 是一个有效的C++表达式吗?
- 为什么这个复合语句作为用大括号和括号括起来的语句序列似乎不是有效的语句表达式
- 仅当返回表达式有效时才启用模板
- 为什么这个C++折叠表达式有效?
- 检查字符串是否包含有效的后缀表达式
- 正则表达式C++如何搜索有效的 Linux 设备节点
- 正则表达式有效和无效的切换
- 仅查找第一个 std::正则表达式有效匹配
- 如何测试字符串是否是有效的C++(ish)表达式
- 有效文件夹名称C (Windows)的正则表达式
- 表达式块类型有效 // 堆栈溢出
- 如何正确测试我的后缀表达式是否有效
- 此表达式有效吗
- 在C++03中,在未赋值的上下文中使用表示非静态数据成员的id表达式有效吗
- 默认函数参数的有效表达式
- 将数组用作c++中有效的条件表达式
- 无效的正则表达式在Qt但在正则表达式教练这个相同的正则表达式是有效的
- QScriptEngine:错误表达式被认为是有效的
- 如何根据表达式在Boost.Hana中是否有效来过滤类型元组
- 是否有表达式为"C++11"的有效 C++11 程序?