Класс std::istream
наследует класс std::basic_ios
, который содержит оператор преобразования
explicit operator bool() const;
, который возвращает !fail()
.
В контексте оператора while объект объектатип std::cin
преобразуется в объект типа bool с помощью этого оператора.
Фактически этот цикл while эквивалентен
while ( not std::cin.fail() )
То есть цикл будет выполнять свои итерации, покавозникнет какая-то ошибка или конец потока.