Why can't std::ostream be moved?
Solution 1:
Originally they were movable. This turned out to be a design flaw on my part, and discovered by Alberto Ganesh Barbati:
http://cplusplus.github.io/LWG/lwg-defects.html#911
The issue shows a few examples where ostream
gets moved and/or swapped, and the results are surprising, instead of expected. I was convinced that these types should not be publicly movable nor swappable by this issue.