In this answer I talk about using a std::ifstream object\'s conversion to bool to test whether the stream is still in a good state. I looked in th
It looks like the C++0x standard section 27.4.4.3 has the answer (emphasis mine).
operator unspecified-bool-type() const;
Returns: If
fail()then a value that will evaluate false in a boolean context; otherwise a value that will evaluate true in a boolean context. The value type returned shall not be convertible toint.Note: This conversion can be used in contexts where a
boolis expected (e.g., an if condition); however, implicit conversions (e.g., toint) that can occur withboolare not allowed, eliminating some sources of user error.