https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109947
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Martin Seemann from comment #5) > Thanks for the clarification! Now I am convinced that it is not a bug in > libstdc++ (although I still doubt that the side-effects were intended when > the committee formulated the "Effects" for monadic operations, but that's > not relevant here). LWG 3843 was resolved after the monadic ops had been specified, and it's possible that we should have altered the monadic ops to use operator*() instead of value(). I'll raise this with the committee.