Short intro to C++ for Rust developers: Ownership and Borrowing
Oh boy there are some serious errors here.Returning a stack allocated value does not invoke the move constructor. It doesn't copy either. This is a separate optimization that existed even prior to C++11 called the "named return value optimization" or NRVO for short. And by "sufficient new compiler" you really should just say every compiler. No compiler I know of in existence used by actual people doesn't implement this.Here's a demo: http://ideone.com/QRqj5PIt's VERY important that this optimization isn't confused with move construction as the latter would actually be extremely less performant than what actually happens.