Learn about generic programming and concepts, views & ranges with Nicolai Josuttis
Meeting C++ is hosting two trainings on the 26th and 27th May with Nicolai Josuttis:
May 26th: Generic programming in C++ with templates and auto
Generic code is key for the success of C++. Almost all parts of the C++ standard library are implemented as templates and with auto. However, the uncertainty when seeing this code and when writing own code is high.
This online training will guide you through the most important elements of generic programming for ordinary application programmers. Based on the general approach for function templates and class templates we cover the more tricky topics like non-type template parameters, variadic templates and fold expressions, class template argument deduction, type traits, and SFINAE.
This can be used as perfect base for the training about C++20/C++23 concepts, which are covered in a training the day after.
May 27th: Concepts, Ranges, and Views - The New Way of Programming in C++
Concepts, ranges, and views, introduced with C++20 and extended with C++23, introduce a new way of programming with C++:
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.
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.
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.
You also can get both as two in one package.