Các mã sau đây xuất phát từ một ví dụ thực hiện std::lexicographical_compare
trên cppreference.com:Tại sao (void) giữa hai dấu phẩy tách ra tuyên bố trong một vòng lặp 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);
}
Tại sao lại có một (void)
trong vòng lặp, và những gì sẽ là hậu quả của việc không đặt nó ở đó?
Ai đó đang lập kế hoạch để thêm '(void)' trước '++ first1' vì' ++ first1, (void) ++ first2' vẫn có thể khởi tạo một toán tử ', được khai báo ở đâu đó, điều này vẫn có thể gây ra sự cố. – cpplearner
@cpplearner Ai đó, huh? –