C++20 in Practice - A Complete Introduction
C++20 is the latest new release of C++, now supported by major compilers. C++20 will change the way we program more dramatically than C++11 did. As usual, several aspects of the new features are not self-explanatory and there are hidden traps. The real power come from combining new features gives even more power. Therefore, it is important to understand the consequence of the new features for programming in practice.
This class will go through all major and important minor features of C++20 (covering both language and library), introduce them conceptually, provide compelling examples, and give key insights and hints about how to use them in practice.
As a member of the C++ standards committee, Nicolai will also give useful background information about purpose and design decisions.
We will cover all new language features with real examples that work and provide insights about the power of C++ but also its flaws and traps.
Topics include:
- The spaceship operator <=>
- Generic functions with auto
- Concepts and requirements
- Details of concepts (using concepts, semantics constraints, concepts versus type traits, standard concepts)
- Ranges and views
- Details of ranges and views (dealing with const, iterator categories, projections, pipelines, sentinels)
- Spans
- Coroutines
- jthread and stop tokens
- Barriers, latches, semaphores, extensions for atomics, and output sync streams
- Chrono extensions (calendar and time zone support)
- Formatted output (standard and user-defined formatting)
- Modules
- consteval, constinit, and compile-time vectors/strings
- New NTTP types (floats, lambdas, objects, ...)
- New lambda features
- Extensions for aggregates
- Several small new language and library features (bits handling, source location, typename, string extensions, char8_t, ...)
Target Audience:
Programmers who want to get a well understanding of the new features of C++20
Prerequisites:
Attendees should be familiar with Modern C++
Nicolai Josuttis is well-known in the community for his authoritative books and talks. For more than 20 years he has been a member of the C++ Standard Committee. He is the author of several worldwide best-sellers, including:
- C++20 -The Complete Guide
- C++17 - The Complete Guide
- C++ Move Semantics - The Complete Guide
- The C++ Standard Library - A tutorial and Reference
- C++ Templates - The Complete Guide (with David Vandevoorde and Doug Gregor)