C++ – Updating Knowledge from Older Versions to C++20/23/26 (CPPU)
Programming, C, C++
Modern C++ represents a major leap forward in the ability to write efficient, elegant, and readable code. In this course, we will begin by introducing useful small improvements and gradually move on to more fundamental changes. We will cover everything from changing the way we approach data structures, through innovations in parallel and asynchronous programming, working with templates and concepts, and compile-time computation, to modularity and optimizing embedded software, especially for latency-sensitive environments.
The course includes a range of exercises focused on refactoring legacy code into a modern form and comparing the benefits of different approaches. It is primarily intended for experienced developers who want to make their code more efficient and easier to understand, learn modern idioms, and move from classic C++ to a modern coding style.
THIS TRAINING COURSE WILL HELP YOU:
- Learn new C++20/23 idioms and prepare for C++26
- Make code more efficient and simpler using ranges, views, and std::span
- Improve code safety and robustness with concepts, std::expected, and constexpr
- Optimize performance and latency for embedded and performance-sensitive applications
- Design and test asynchronous and concurrent solutions using coroutines, jthread, and futures
- Refactor legacy code into modern templates, modularity, and allocation-free polymorphism
WHO SHOULD ATTEND?
- Experienced C++ developers
- Embedded systems developers
- Performance and systems engineers
- Backend and network developers
- Software architects and technical leads
COURSE LOCATION AND AVAILABLE DATES
Contact us
Need this course in English?
Public courses are usually delivered in Czech, but this course is also available in English. We can arrange private training for your team online, at your premises or in our classrooms, and tailor the content to your needs.
For groups of around 4 or more participants, private training can already be comparable in price to booking individual places on a public course. Send us your requirements and we’ll recommend the best format and provide an exact quote.
Request training in English
Course content:
Hide details
-
What the New Versions of C++ Bring
-
Tools for greater readability and reliability
-
Improving performance and latency in the embedded world
-
C++20 and C++23 tools, expectations for C++26
-
Various Small Improvements
-
Formatted output and std::println
-
Changes in the initialization of values and variables
-
The spaceship operator and strong or weak ordering
-
Interesting Specialized Tools
-
Multiple values during indexing
-
Calculations with std::lerp
-
Endianness and byteswap
-
Working with Directory Structures
-
Traversing directory structures
-
Modifying files and directories
-
Interaction with the rest of the standard library
-
Working with Parts of Arrays and Strings
-
Contiguous sequences and std::span
-
Passing strings and std::string_view
-
Advantages and risks of views into memory
-
Improved Container Handling
-
Removing elements with std::erase
-
Decomposing with structured bindings
-
Moving away from direct iterator use
-
How Ranges and Views Work
-
The relationship between ranges, views, and containers
-
What is wrong with iterators in C++
-
What to watch out for with ranges
-
Tools for Filtering and Transformation
-
Views as lazy iterators
-
Chaining operations on views
-
Which views are available
-
Modern Thread Handling
-
Futures and promises
-
Working with std::jthread
-
Using std::async
-
Asynchronous Calls Using Callbacks
-
Passing callbacks to events
-
Composing callback sequences
-
The coroutine-based approach
-
Coroutines and Asynchronous I/O
-
Motivation for using coroutines
-
External libraries with a scheduler
-
Potential impacts in the embedded world
-
Asynchronous Network Communication
-
Communication using TCP/IP
-
HTTP server and client
-
Concurrency with other operations
-
Compute Threads and Coroutines
-
Coroutines are intended to handle I/O
-
CPU-bound versus I/O-bound
-
Combining threads and coroutines
-
Templates and Their Specialization
-
Special handling of specific cases
-
Specialization using tagging and policies
-
Metafunctions and compile-time computations
-
Constraining Type Parameters
-
Documenting type requirements
-
SFINAE and programming with type traits
-
Explicit constraints and concepts
-
More Convenient Work with Templates
-
Abbreviated function templates
-
Deducing this and perfect forwarding
-
CTAD and omitting type parameters
-
Combining OOP and Templates
-
Using inheritance without virtual methods
-
Adding functionality with CRTP
-
Type erasure and std::any
-
Libraries in Header Files
-
The modern meaning of the inline keyword
-
ODR and how it all works
-
Combining it with templates and classes
-
Metaprogramming Beyond Templates
-
The constexpr, consteval, and constinit keywords
-
The if constexpr and if consteval conditions
-
Using static_assert()
-
Combining constexpr and Templates
-
Branching by type at compile time
-
Significantly simplifying some templates
-
constexpr function and variable templates
-
Modularity
-
Header files and #pragma once
-
Custom modules and modifying the ODR
-
The standard library in module form
-
Lambdas and Their Improvements
-
Implicit and explicit templates
-
Lambdas with constexpr and consteval
-
Implicit behavior of a stateless lambda
-
Error Handling Without Exceptions
-
The std::expected return value
-
Working with std::optional
-
Chaining monadic operations
-
Heap-Free Runtime Polymorphism
-
The polymorphic type std::variant
-
Applying overloads with std::visit
-
From lambda templates to the overloaded pattern
-
Prerequisites:
-
Knowledge of the C++ language.
-
Recommended previous course:
-
C++ – Practical Programming for Advanced Developers (CPP2)
-
Recommended follow-up course:
-
C++ – Design Patterns and Idioms (CPP3)
-
Schedule:
-
5 days (9:00-17:00)
Training and learning environment
What does the environment for in-person IT courses look like?We hold training courses in our own classrooms equipped with modern computer equipment for each participant and a large projection screen. Each workstation is fitted with a powerful computer for seamless practical exercises, and the environment supports a calm, friendly atmosphere during training.
Do I need to bring my own laptop to the classroom IT course?Our training rooms are fully equipped, so you do not need to bring your own laptop. A modern computer with all necessary hardware and software is ready for you at your workstation.
Will you receive an official certificate after completing an IT course?Yes, upon successful completion of the training course, you will receive an official ICT Pro certificate confirming your participation and acquired technical skills. You can use it to verify your qualifications or add it to your professional profile.
Where can you find our training center in Brno?The premises of the ICT Pro training center are located on the 1st floor of the COMGUARD building at Sochorova 38 in Brno. Positioned on the border of Žabovřesky and Komín, the location is easily accessible by both car and public transport.
Where can you find our training center in Prague?The premises of the ICT Pro training center are located on the 1st floor of the Opatov Park building at Líbalova 1, Prague 11 – Chodov. The location provides a comfortable environment for your education with convenient access.
What facilities and refreshments are available to you during training breaks?Our training centers feature a fully equipped kitchenette for a comfortable break during your courses. The facilities include a coffee machine, microwave, kettle, and a wide selection of drinks and snacks.
What beverage refreshments are available during your course?A beverage station with a coffee machine, teas, syrups, and water is at your disposal throughout the entire training session. You can enjoy a coffee or another drink of your choice anytime during breaks.
What light refreshments are provided for you during the courses?During course breaks, participants can enjoy light sweet snacks, pastries, and fruit syrups to mix their own drinks. Fresh water dispenser and plates are also available for your convenience.
Should I bring my own snacks to ICT Pro training?There is no need to. A wide selection of savory snacks, sweet biscuits, and snack bars is available for you during breaks. Boost your energy for all-day focus right inside the training center premises.
Can you spend training breaks in the fresh air?Yes, an outdoor terrace is available at our training center. During breaks between learning sessions, you can relax in the fresh air in a pleasant green environment.
Where can you relax during course breaks?Our training center features a spacious outdoor terrace with seating options. During breaks between learning sessions, you can step outside to relax and recharge in the fresh air.