Why don't iostream objects overload operator bool?

前端 未结 3 1584
無奈伤痛
無奈伤痛 2020-12-06 18:15

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

3条回答
  •  庸人自扰
    2020-12-06 18:31

    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 to int.

    Note: This conversion can be used in contexts where a bool is expected (e.g., an if condition); however, implicit conversions (e.g., to int) that can occur with bool are not allowed, eliminating some sources of user error.

提交回复
热议问题