
This video provides an overview of the entire course.
Understand the difference between lvalue and rvalues, gaining a solid theoretical base required to understand move semantics
Understand what move semantics are and how they enable efficient resource transfer and ownership transfer
Learn about practical usages of std::move that can make your code more efficient
Learn about the more fine-grained value categories of the language, in order to increase your understanding of the rules that guide move semantics
Understand how to decrease boilerplate code and increase the flexibility of your interfaces by using perfect forwarding
Understand what the risks of manual memory management are and how smart pointers prevent them
Overview of std::unique_ptr and its basic interface, understand how unique_ptr works and what problem it solves
Overview of std::shared_ptr and std::weak_ptr, understand how they work and the type of ownership they model
Learn how to choose between raw/unique/shared/weak pointers in your interfaces and implementation, understanding their pro/cons and “conventional” meanings
Understand the benefits of writing movable classes in relation to facilities provided by the Standard Library
Learn rules that can guide developers to write correct and complete movable classes
Step-by-step implementation of an `std::vector` clone that uses move semantics and is move-aware
Understand what lambda expressions are and what problem they solve
Learn how lambda expressions work and what the compiler generates under the hood
In-depth analysis of lambda expression syntax from C++11 to C++17
Understand the versatility of lambdas and unconventional problems solved by them
Learn how to store arbitrary closures and callable objects, and the `FunctionObject` and `Callable` concept definitions
Learn about higher-order functions and the problems solved by them, techniques to pass functions to other functions
Understand how lambdas and the Standard Library interact and benefit from each other
Learn how and when to use lambdas as short local functions, in order to reduce repetition and increase maintainability
Through realistic examples, understand how higher-order functions can be used to create safer and easier interfaces for your users
Understand what a “constant expression” is and how `constexpr` allows to create functions that can be executed at compile-time
Learn about `constexpr` features in the Standard Library introduced throughout C++11/14/17, and upcoming C++20 features
Understand the interactions between exceptions and compile-time evaluation of `constexpr` functions
Understand what a “metafunction” is and how types can be manipulated through templates
Learn about the most important features from the `` and `` headers
Learn how to create a simple set-like compile-time data structure with a familiar `constexpr`-based syntax
C++ has come a long way and has now been adopted in several contexts with the latest updates of the STL and with C++17 on its way.
This video course will take you through C++'s Standard library and the most important features of C++11/14/17. You will begin with new language features and will gradually move on to library components and then to the traps and pitfalls and ways to avoid them. You will learn about STL components such as <utility>, smart pointers, `std::function`, `std::move`, and `std::exchange`, while at the same time reinforcing and deepening your understanding of the new language features. From here, you will learn to examine containers, iterators, function objects, with STL algorithms and lambda expressions. You will also be introduced to some upcoming C++17 additions including language features such as `constexpr` lambdas, and library additions such as the new algebraic data types and metaprogramming utilities. Throughout the course, you will learn the common pitfalls in "old" C++ programming and best practices for software development in Modern C++.
By the end of the course, you will have mastered Modern C++'s most impactful language and library features.
About the Author :
Vittorio Romeo
Vittorio has been a C++ enthusiast from a young age, with a BS in Computer Science from the Università degli Studi di Messina, and now works at Bloomerg LP. While following the evolution of the C++ standard and embracing the newest features, he worked on several open-source projects, including modern general-purpose libraries and free cross-platform indie games. Vittorio is an active member of the C++ community, speaking at many conferences and events. He currently maintains a YouTube channel featuring well-received Modern C++11 and C++14 tutorials. When he's not writing code, Vittorio enjoys weightlifting and fitness-related activities, competitive/challenging computer gaming, and good sci-fi movies/TV-series.