Poniższy kod pochodzi z przykładu realizacji std::lexicographical_compare
na cppreference.com:Dlaczego (void) między dwóch oddzielonych przecinkami oświadczenia w pętli for
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);
}
Dlaczego istnieje (void)
w pętli, a co byłoby konsekwencja nie umieszczenia go tam?
Ktoś planuje dodać '(void)' przed '++ first1', ponieważ' ++ first1, (void) ++ first2' może nadal tworzyć jakiś 'operator,' zadeklarowany gdzieś, co może nadal powodować problemy. – cpplearner
@cpplearner Ktoś, hę? –