https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66145
--- Comment #17 from Boris Kolpackov <boris at kolpackov dot net> --- > if (is >> x >> y >> z) And what should happen in the else part of such statements? if (is >> x >> y >> z) ... else throw something(); Also note that if the 'is >> x' call in the above chain fails, you will still execute 'is >> y' and 'is >> z' before noticing the failure.