c++ - 无效(操作系统 << 参数)。在这种情况下,void 是什么意思?
问题描述
我正在阅读有关折叠表达式的内容,并找到了折叠表达式之前使用的示例:
template <class... Ts>
void print_all(std::ostream& os, Ts const&... args) {
using expander = int[];
(void)expander{0,
(void(os << args), 0)...
};
}
问题是void(os << args)
位。在这种情况下,void 是什么意思?我已经尝试过搜索这个,但它非常通用。
谢谢你的时间。
解决方案
它将结果转换为(os << args)
to void
。而已。
这种风格用于防止,
(逗号)运算符的非常罕见的重载,因为理论上,<<
可以为用户定义的args
参数重载并返回已重载逗号运算符的内容以进行X, 0
表达式。这可能会破坏初始化技巧。这样,代码是安全的,并且逗号始终用作普通的排序运算符。
推荐阅读
- profiler - JMH 的 DTraceAsmProfiler 在 Mac 上因“[sudo: a password is required”而失败
- bootstrapping - 使用引导程序计算 p 值
- laravel - 资产没有在 laravel 中被解析
- sql - UPDATE,使用 CASE 语句,忽略 NULL 值
- r - 比较同一列中的两个连续值
- java - 缺少 POM,没有可用的依赖项信息
- sql-server - 在 SQL Server 数据库中将长日期时间转换为实际日期时间的最佳方法是什么?
- powerbi - Power Query 问题中的 IF 函数
- python - 基于多标签分类的混淆矩阵可视化呈现
- botframework - 带有 React 组件的任务模块未打开