В этот ответ Я говорю об использовании преобразования std::ifstream
объекта в bool
, чтобы проверить, находится ли поток в хорошем состоянии. Я заглянул в книгу Josuttis для получения дополнительной информации (стр. 600, если вам интересно), и оказалось, что iostream
объекты действительно перегружают operator void*
. Он возвращает нулевой указатель, когда поток плохой (который может быть неявно преобразован в false
), и ненулевой указатель в противном случае (неявно преобразован в true
). Почему они просто не перегружают operator bool
?