在C++11中,未排序的修改警告变为结果未使用的警告
Unsequenced modification warning becomes result unused warning in C++11
我正在试验这个过滤器库,并从下面的代码片段中得到一个未排序的修改警告。
while (--numSamples >= 0)
*dest++ = state.process(*dest, *this);
在SO上查看类似的问题是有意义的,因为dest是在同一命令中修改和访问的。所以,我想预期的功能如下。
while (--numSamples >= 0) {
*dest = state.process(*dest, *this);
*dest++;
}
然而,这为后增量提供了一个新的、更奇怪的警告"警告:表达式结果未使用"。为什么会出现此新警告,以及我应该如何正确解决此问题?
*dest++
递增dest
,并取消引用dest
的先前值。增量是你想要的副作用,取消引用没有效果。只需将其写成dest++
(或++dest
)即可。
相关文章:
- 警告处理为错误这里有什么问题
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 警告 C4552:">>":未使用表达式的结果
- 在尝试提交作业警告时,我一直在警告:与未指定行为的字符串字面结果比较[-WADDRESS]
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 为什么 G++ 不警告 const 成员的未使用结果?
- 不等式比较结果 移至 C++11 时未使用的警告
- 警告:表达式结果未使用
- 在C++11中,未排序的修改警告变为结果未使用的警告
- 在使用/Wp64进行编译时,如何在不发出警告的情况下将strlen的结果转换为int