在C ++ 11中,未排序的修改警告将成为未使用结果的警告

时间:2015-12-02 14:52:47

标签: c++ c++11 sequence

我正在尝试使用this过滤器库,并从以下代码段中获取未经检测的修改警告。

while (--numSamples >= 0)
    *dest++ = state.process(*dest, *this);

在SO上查看类似问题是有道理的,因为在同一命令中修改和访问了dest。所以,我想预期的功能如下。 。

while (--numSamples >= 0) {
    *dest = state.process(*dest, *this);
    *dest++;
}

但是,这为后增量提供了一个新的,更好奇的警告“警告:表达结果未使用”。为什么会出现这个新警告,以及我该如何正确解决这个问题?

1 个答案:

答案 0 :(得分:6)

*dest++增加dest,并取消引用dest的先前值。增量是您想要的副作用,取消引用无效。只需将其写为dest++(或++dest)。