Хотя можно написать такой код, это может быть несколько странно. Несколько более реалистичный вариант использования будет, если у вас есть структура T
следующим образом:
struct T {
bool check() const;
void fix();
};
Теперь вы хотите перебрать все в структуре и запустить проверку, а затем вызвать fix, если check возвращает false. Простой способ сделать это будет
for (list<T>::iterator it = mylist.begin(); it < mylist.end(); ++it)
if (!it->check())
it->fix();
Давайте представим, что вы хотите написать это как можно короче. fix()
возврат пустоты означает, что вы не можете просто привести его в состояние. Однако, используя оператор запятой, вы можете обойти это:
for (auto it = mylist.begin(); it != mylist.end() && (it->check() || (it->fix(), true)); ++it);
Я бы не использовал его без особых на то оснований, но он позволяет вам вызывать любую функцию из условия, что может быть удобным.