Opleiding: What's new in C++23 (English) (Virtual)
Lesmethode :
Virtueel
Algemeen :
In the course What's New in C++23 you learn about the additions and changes introduced in the C++23 standard and how to use them in modern C++ development. The course focuses on developers who already work with C++ and want to understand the latest language features and library enhancements. You examine what has changed compared to earlier standards and where these new capabilities fit within day-to-day software development.
The course covers the most important updates in C++23, including new language functionality and additions to the standard library. You explore the purpose of these changes and their impact on writing, maintaining and modernising C++ code. Attention is given to practical usage and to understanding when the new features provide advantages over existing approaches.
Throughout the course, the new C++23 capabilities are discussed in the context of real-world software development. By comparing new and existing techniques, you gain a clear understanding of how the latest standard can be applied within current codebases. After completing the course, you can evaluate and adopt C++23 features in a structured and informed way.
Doel :
After this course, you can identify the most important additions in C++23 and apply them in your own C++ projects. You can also assess when new language and library features are appropriate for a specific development scenario.
Doelgroep :
Anyone working with C++, such as software developers, application developers and technical specialists who want to update their knowledge of the latest C++ standard.
Voorkennis :
The following prior knowledge is required:
- What's new in C++20 (English)
- Practical experience with C++, the course sometimes goes very deep into C++ because new functionality is often in the more difficult parts of the language.
Onderwerpen :
- Core Language Changes
- String Formatting Improvements
- Standard Library Modules
- Flat Maps and Sets
- std::mdspan
- std::generator
- String and string_view Improvements
- Monadic Operations for std::optional
- Stacktrace Library
- Changes to the Ranges Library
- Changes to the Views Library
- std::expected
- Utility Additions
- Core Language Changes
+nbsp;+nbsp;+nbsp;- Explicit Object Parameters (deducing this)
+nbsp;+nbsp;+nbsp;- If consteval
+nbsp;+nbsp;+nbsp;- Multidimensional Subscript Operator
+nbsp;+nbsp;+nbsp;- Attributes on Lambda Expressions
+nbsp;+nbsp;+nbsp;- Literal Suffix for size_t
+nbsp;+nbsp;+nbsp;- auto(x): decay-copy in the language
+nbsp;+nbsp;+nbsp;- elifdef,
- elifndef and
- warning
+nbsp;+nbsp;+nbsp;- Marking Unreachable Code
+nbsp;+nbsp;+nbsp;- Assumptions
+nbsp;+nbsp;+nbsp;- Named Universal Character Escapes
+nbsp;+nbsp;+nbsp;- Trim Whitespace Before Line Splicing
- String Formatting Improvements
+nbsp;+nbsp;+nbsp;- New Formatting Options
+nbsp;+nbsp;+nbsp;- std::format Extensions
+nbsp;+nbsp;+nbsp;- Performance Improvements
- Standard Library Modules
+nbsp;+nbsp;+nbsp;- Module Basics
+nbsp;+nbsp;+nbsp;- Importing Standard Library Modules
+nbsp;+nbsp;+nbsp;- Benefits of Modules
- Flat Maps and Sets
+nbsp;+nbsp;+nbsp;- std::flat_map
+nbsp;+nbsp;+nbsp;- std::flat_set
+nbsp;+nbsp;+nbsp;- Performance Characteristics
+nbsp;+nbsp;+nbsp;- Use Cases
- std::mdspan
+nbsp;+nbsp;+nbsp;- Multidimensional Views
+nbsp;+nbsp;+nbsp;- Layout Policies
+nbsp;+nbsp;+nbsp;- Accessor Policies
+nbsp;+nbsp;+nbsp;- Practical Applications
- std::generator
+nbsp;+nbsp;+nbsp;- Coroutine-Based Generators
+nbsp;+nbsp;+nbsp;- Lazy Evaluation
- Range Integration
+nbsp;+nbsp;+nbsp;- Practical Examples
- String and string_view Improvements
+nbsp;+nbsp;+nbsp;- basic_string(_view)::contains()
+nbsp;+nbsp;+nbsp;- Construct string(_view) from nullptr
+nbsp;+nbsp;+nbsp;- basic_string::resize_and_overwrite()
+nbsp;+nbsp;+nbsp;- Performance Optimizations
- Monadic Operations for std::optional
+nbsp;+nbsp;+nbsp;- and_then()
+nbsp;+nbsp;+nbsp;- or_else()
+nbsp;+nbsp;+nbsp;- transform()
+nbsp;+nbsp;+nbsp;- Functional Programming Patterns
- Stacktrace Library
+nbsp;+nbsp;+nbsp;- std::stacktrace
+nbsp;+nbsp;+nbsp;- Capturing Stack Traces
+nbsp;+nbsp;+nbsp;- Debugging Applications
+nbsp;+nbsp;+nbsp;- Platform Support
- Changes to the Ranges Library
+nbsp;+nbsp;+nbsp;- New Range Adaptors
+nbsp;+nbsp;+nbsp;- Range Algorithm Extensions
+nbsp;+nbsp;+nbsp;- Performance Improvements
- Changes to the Views Library
+nbsp;+nbsp;+nbsp;- New Views
+nbsp;+nbsp;+nbsp;- View Composability Improvements
+nbsp;+nbsp;+nbsp;- Practical Applications
- std::expected
+nbsp;+nbsp;+nbsp;- Error Handling Without Exceptions
+nbsp;+nbsp;+nbsp;- Monadic Operations
+nbsp;+nbsp;+nbsp;- Comparison with std::optional
+nbsp;+nbsp;+nbsp;- Best Practices
- Utility Additions
+nbsp;+nbsp;+nbsp;- std::move_only_function<>
+nbsp;+nbsp;+nbsp;- std::spanstream
+nbsp;+nbsp;+nbsp;- std::byteswap()
+nbsp;+nbsp;+nbsp;- std::to_underlying()