C++ Course: Programming with C++11 to C++17
Enhance your C++ skills with "Programming with C++11 to C++17". Learn Lambdas, constexpr, move semantics, and structured bindings for cleaner, faster code.
Participants will learn
- be able to use the placeholder type auto safely
- use range-based for loops to write safe loops
- avoid memory leaks by using smart pointers
- handle dynamic memory efficiently thanks to move semantics
- understand variadic templates and their advantages
Duration
3 days
Prerequisites
Developers of C++ based systems. A good knowledge of the C++.
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
- New language features of C++11 to C++17
- Uniform initialization
- Placeholder data type:
auto - range-based for loops
- Default member initialization
- Constructor delegation
- Constructor inheritance
class enum- Deliberately disable member functions
- Attributes
overridefinal- Literal variants
nullptr- Scope control using
iforswitchwith initialization - Structured bindings
- Compile time calculations
- Compile-time vs. runtime
constexpr- Optimization vs. guarantees
constexpr if
- Lambdas
- Lambda expressions
- Lambda captures
- Generic lambdas
- Lambdas applied
- Template innovations
- Type-Traits
- Variable templates
- Variadic templates
- Fold-Expressions
- CTAD
- Placeholder data type as NTTP
typenamevs.class
- Move semantics
- The value categories
std::move- Move semantics: move or duplicate
- Special member functions and their dependencies
- The STL, move, and custom object
- Perfect forwarding
- Smart pointers
std::unique_ptrstd::shared_ptrstd::weak_ptr
- STL innovations
std::chronostd::tuplestd::arraystd::vectorstd::reference_wrapperstd::liststd::string_viewstd::optionalstd::functionstd::variantstd::any
Curious about how my C++ courses work?
Would you like to get a better idea of me and my teaching style in advance? Then I invite you to watch this excerpt from a recording of a one-hour online workshop.
Included in this course are
- A color PDF handout, 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 of one of my books.
What you can expect from my training courses.
My motto is "Write unique code." I like to reduce the code to the necessary parts. Duplication can be done using templates or functions so that, in the end, each individual piece of code clearly contributes to the code base. Only the unique code reduces maintenance. It gives you more time to focus on your next customer needs.
In order to write unique code in practice, all training courses have a high practical component. Impulses and presentations complement practical exercises. In any case, my sessions are very interactive. I like to hear what the participants think to give the right tips. This creates a training experience in which each participant learns something new and achieves their learning success. The training components build on each other didactically and in terms of content. And I answer questions at any time.
The live demo parts are an essential part of my lessons. I use the following two tools there:
- Compiler Explorer von Matt Godbolt
- C++ Insights created by me.
Not the right course?
You have not found the right training course or would like a modification? I would be happy to create a training course for your needs. Simply contact me with your request: Contact now
Looking for a course in German? I offer all my classes in German as well.
For individuals
You're an individual and don't want to wait for an open-enrollment course? You can check out my self-study course which is a great alternative for you. Here is a fitting course.
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.


