https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71431
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Oops, sorry, that was meant to be: std::cout << f.fail() << f.bad() << '\n'; std::cout << ss.fail() << ss.bad() << '\n'; Which prints: 00 10 and I think that's correct.