https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67399

Daniel Krügler <daniel.kruegler at googlemail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |daniel.kruegler@googlemail.
                   |                            |com

--- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> ---
In C++ there never existed an operator== for istream. The reason, why your code
compiles in C++03 is because std::basic_ios had

operator void*() const;

which was considered in this context to compare void* against a null pointer
literal. This implicit conversion of iostream could lead to very subtle and
surprising valid expression. When C++11 became standardized the language had
introduced *explicit* conversion functions and the above member became replaced
by

explicit operator bool() const;

which doesn't support your kind of conversion example anymore. If you want to
write code that works in all currently existing C++ versions, you should better
replace

if (cin.getline(x, sizeof (x)) == 0) { .. }

by

if (!cin.getline(x, sizeof (x))) { .. }

In other words: This is an invalid bug report.

Reply via email to