Michael Klose started programming at 8 years old, in BASIC on a ZX Spectrum. He started using C++ using Turbo C++ 1.0 as a teenager, which came out in 1991.
These days, despite being busy leading Commvault's Silicon Valley engineering team, he still programs C++ code himself whenever he gets the time — mostly after everyone has gone home — and frequently gives internal presentations on C++11(+) and other programming-related topics.
C++11 practically introduced a new language and it is my experience that only the fewest know that it even exists. Even recent text books that claim to follow the C++11/14/17 standard still describe how to do things the way we did 15 years ago, using C-Style arrays and lots and lots of (raw) pointers without a single mention of move semantics or RAII.
In my presentation, I will talk about things that I wish any current C++ developer knew, particularly about what move semantics and RAII are and how the former changes everything; how these together make reasoning about the life time and ownership of objects much easier, especially across function calls; how move semantics can avoid pointers in the majority of cases where you needed them previously; and if you really need pointers, how std::unique_ptr and their cousins (std::shared_ptr, std::weak_ptr) can make your life so much easier.
In addition, I will talk about lambda functions, and how these can be paired with the vast library of standard algorithms and how so doing will make your code more readable and, in all likelihood, faster.
The talk concludes with other miscellaneous things about C++/C++11 that I wished people knew, for example which containers to prefer (std::unordered_map vs std::map and std::vector vs std::list), C++11 constructs like class enums, C++ class member initializations and others.
If you haven’t heard of move semantics or have never used a lambda function in C++, then this talk is for you.