这里(无效)first2++有什么意义?

What's the point of (void) first2++ here?

本文关键字:什么 first2++ 无效 这里      更新时间:2023-10-16

在此页面上。CPPREFERDER,有可能实现词典比较的例子。这是基本的:

template<class InputIt1, class InputIt2>
bool lexicographical_compare(InputIt1 first1, InputIt1 last1,
                             InputIt2 first2, InputIt2 last2)
{
    for ( ; (first1 != last1) && (first2 != last2); first1++, (void) first2++ ) {
        if (*first1 < *first2) return true;
        if (*first2 < *first1) return false;
    }
    return (first1 == last1) && (first2 != last2);
}

诸如(void)some_argument;之类的IIRC线通常用于替代有关未使用参数的编译器警告。但是在此函数中,所有参数(包括first2(都使用 - ,那么在for语句中编写(void) first2++的意义是什么?

如果Inputit1 Overloads operator,

,是否有一些语法解决方法

它可以确保使用内置逗号运算符 - 以防万一有用户定义的过载可以执行意外的事情。void类型的值永远不会传递给函数,因此在这里无法选择此类过载。

想象一下,否则如果存在此功能会发生什么:

void operator , (InputIt1 const &, InputIt2 const &) { launch_missiles(); } 

编辑:实际上在相关的CPPReference讨论页面上提到了这一点。