Copy Elision

(Guaranteed) Copy Elision in C++11/14/17

Why `auto foo = Foo()` does neither copy nor move a `Foo` object. C++17's mandatory copy elision omits copies and moves when initializing from temporaries, returning temporaries or throwing/catching by value.