Trainings Details
Concepts, ranges, and views, introduced with C++20 and extended with C++23, introduce a new way of programming with C++:
- Concepts establish a way to deal with requirements and constraints to simplify overloading and improve error messages of generic code. This sounds simple but changes the way we write code significantly.
- Ranges and views establish a new way to deal with collections and containers. Instead of using begin() and end(), we deal with the collections as a whole. This establishes new ways of data processing (such as defining pipelines) but also introduces new pitfalls and caveats.
Both features were designed together so that they benefit from each other:
- Ranges and views are implemented using concepts to behave well and help with their usage.
- As a consequence, standard concepts were designed according to a real non-trivial application of using them.
This full day tutorial guides you though these new features. The features are motivated and explained so that you understand purpose and design as well as how to use them in practice. This also implies to talk about the most important pitfalls (there are several) so that you avoid wasting time or getting even frustrated by unexpected behavior or strange errors.
Trainings Agenda
- Introduction to requirements, concepts, and constraints
- How to use concepts right
- Subsuming concepts
- Standard concepts
- Requirements and compile-time if
- Testing concepts
- Overview of the ranges library
- Dealing with single-argument ranges
- Using new algorithms for ranges
- Motivation and design of views
- Pipielines of views
- Limits and pitfalls of views
- How to use concepts, ranges, and views in practice