以下代码来源于 cppreference.com 上 std::lexicographical_compare
的实现示例:
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)
,如果不加上它会有什么后果?
++first1
之前添加(void)
,因为++first1,(void) ++first2
仍可能实例化某些在其他地方声明的operator,
这可能仍然会造成问题。 - cpplearner