最佳答案
您应该添加编译时使用的语言标准和编译器。
直到 C++11,std::basic_ios
有 operator void*
,从 C++11 开始它有 explicit operator bool
.
第二个是显式的,这意味着您的示例中的隐式转换不能使用它。
来自 GNU 项目的 libstdc++ 仍然无条件地包含预 C++ 转换(版本 4.9.1):
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
漏洞 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56193自 2014 年 9 月 24 日起已解决,因此下一个版本应该更正。
关于c++ - 将流转换为 bool 在另一个编译器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26304949/