Полагаю, с обновлением вы переходите в режим C ++ 11.
До C ++ 11, std::basic_ios
(базовый класс std::basic_ofstream
) может преобразовываться в void*
неявно.
Возвращает нулевой указатель, если fail()
возвращает true
, в противном случае возвращает ненулевой указатель.
Затем out!=0
проверяет, нет ли в потоке ошибок и готов ли к дальнейшим операциям ввода-вывода.
Начиная с C ++ 11, существует только один оператор преобразования, который может конвертировать std::basic_ios
в bool
. Обратите внимание, что оператор помечен как explicit
, поэтому неявное преобразование не разрешено для out!=0
.
. Вы можете изменить код на !!out
(вызывая operator!
) или !out.fail()
или static_cast<bool>(out)
(явное преобразование через operator bool
).