Programming with C++11 to C++17
Course Description
C++ has changed massively since 2011. There were three new language standards: 11, 14, and 17. A fourth is with C++ 20 already on the way.
The new elements often make it easier for us to write less and more correct code. With constexpr
, the language has a unique way to do things already at compile time. Our bonus: less RAM and ROM consumption and time-saving.
In this class, you will learn how the new standards help you to write faster and more robust code.
Course Content
After a long period without updates to C++ until 2011, the language has been continuously improved with new standards. This brings valuable new features such as constexpr
to optimize code size or performance to C++, which you are about to learn.
You will start learning about new language elements like auto
, override
, and uniform initialization. With this knowledge, you continue to look into innovations such as constexpr
. Of course, you will learn about Lambdas as well. After all, they are one of the long-missing elements.
Your next stop is another innovation of C++11: variadic templates. You learn how they work and where they will assist you in writing less code yourself.
This is followed by the probably most impactful feature of C++11: move semantics. You will learn what that is, how it works, and most importantly, the benefits it brings you. You will see situations where move semantics get disabled by the compiler.
You will learn about structured bindings, a C++17 feature that helps you write less code once again.
Finally, you will look at a few selected innovations in the STL. Very interesting for many C++ programmers, here are the smart pointers. But also containers like std::tuple
or std::vector
are on your learning plate.
After this course, you clearly understand what the new standards bring to you. Selecting features from the new language standards for a project and using them safely is easy for you.
Course Outline
- Clean and modern C++ code
- Uniform initialization:
- Initialization with curly braces
std::initializer_list
- New elements:
- Type determination with
auto
and trailing return type - Range-based
for
-loops - Literal operator
class enum
nullptr
override
final
=default
,=delete
- Direct member initialization
- Inherited constructors
- Structured bindings
- Type determination with
- Do things at compile time:
constexpr
static_assert
constexpr if
- Lambdas
- Move semantics:
- Rvalue references
std::move
- Prefect forwarding
- The rule of 0/
3/5 / DesDeMovA
- Template changes:
- Variadic templates
- Alias template with
using
- Fold expressions
- Class Template Argument Deduction
- Selected updates to the STL:
- Smart pointer
std::array
std::tuple
- Type-traits
- Time under control with
chrono
- A look in the
algorithm
header
Included in this course are
- A handout as color PDF, which includes all references and an acronyms list;
- The source code for the exercises as well as sample solutions for all exercises as a ZIP-file;
- Certificate of attendance;
- A complimentary copy one of my books
Keep me informed
Aside from my in-house classes, I offer open-enrollment courses occasionally. They take place online via Zoom, approx. 10 am - 2 pm EDT over five days. If you're interested, please subscribe for updates.