The boolean value of the istream is false is failbit or badbit is set, not eofbit.  Probably doesn't make a difference in normal operation, since it is just an extra read that results, but would it be useful to know if the stream ends for a reason other than eof (interrupt, process killed)?