https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69924
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler@googlemail. | |com --- Comment #5 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- (In reply to derrick from comment #3) > if(static_cast<bool>(std::cin >> loc)!=1) > return 1; > if(static_cast<bool>(std::cout << loc)!=1); > return 1; This is not an improvement, because that code still relies on an implicit conversion from std::cin/std::cout to another type. In additiona the second "if" has a suspecious semicolon right after the parentheses. This should be correct code: if((static_cast<bool>(std::cin) >> loc)!=1) return 1; if((static_cast<bool>(std::cout) << loc)!=1) return 1; and it is accepted by the compiler as it should be.