在24.2.3 Input iterators
下,C ++标准指定输入迭代器的一个要求,因为表达式(void)r++
等同于(void)++r
。
您也可以在cppreference看到此消息。
那是什么表达?这个要求有什么意义?为什么需要?
对于r++
或++r
的结果,它看起来像C样式,但我不认为它是真实的。也就是说,稍微离题,看起来我可以在类中定义void
转换运算符。 gcc和clang都编译它,但clang发出警告:
警告:转换功能转换' C'到'无效'永远不会 使用
答案 0 :(得分:5)
这是void
的C风格演员。标准的含义是r++
和++r
必须等效,如果不使用它们的返回值,即它们具有相同的副作用。
答案 1 :(得分:3)
它基本上意味着迭代器的前或后递增应产生相同的效果,尽管返回的值可能(并且在一般情况下)会有所不同。
这就是C ++规范以最混淆的方式陈述显而易见的方式:)。