This post is also available on Sy Brand’s blog C++17 merged in a paper called Guaranteed copy elision through simplified value categories. The changes mandate that no copies or moves take place in some situations where they were previously allowed, e.g.: struct non_moveable { non_moveable() = default; non_moveable(non_moveable&&) = delete; }; non_moveable make() { return […]