Overview
Explore the intricacies of C++ move semantics and copy elision in this ACCU 2018 conference talk. Delve into the evolution of object creation optimization from C++98 to C++17, examining worked examples and practical implications. Learn about temporary materialization, potential pitfalls in clever coding, and the rules governing special members. Compare copy and move operations, understand MSVC x86/x64 conventions, and gain insights into efficient argument passing and return value handling in functions. Discover why sometimes not creating an object at all can be the most efficient approach in C++ programming.
Syllabus
Intro
How did we get here?
How does this magic work?
Early days of C++
Another C++98 example...
A third C++98 example...
Can actually break C++03 code
Temporary Materialization
A simplification
Don't be too clever!
Another example...
One bad object poisons the move
Special Members
What are the rules?
Comparison of copy and move
MSVC x86/x64 convention
Passing arguments to functions
Returning or passing a reference?
Taught by
ACCU Conference