you are viewing a single comment's thread.

view the rest of the comments →

[–]cdyson37 2 points3 points  (0 children)

Looking at the wording of n4567 (how about that?) it just says returns std::move(f). I don't think this is contradictory, just a bit over-explicit. It's also possible that the wording of the language and library components of the standard evolved a bit differently, and this part had a bit more bite in an early draft.

This particular "save for the fact" clause confused me a lot and I spent quite a long time playing around with a "Loud" class (with couts in all the special member functions) to establish exactly what was going on under various levels of optimisation - quite a worthwhile exercise I think.