The C++17 Seminar
Based on a substantial understanding of C++, this course presents the standard of this programming language ISO/IEC 14882:2017 (more simply known as ISO C++17 or C++17). In this context, the changes in the new standards compared to the old ones ISO C++98 and ISO C++11 are addressed. The innovations are depicted and practiced during the seminar using operational examples.
The following subject matters are covered:
-
New Keywords for Handling Types and Declarations:
auto
decltype
using
- Alignment
alignas
alignof
- The keyword
nullptr
- New Types
- Strongly typed Enums
- Scoped Enums
- Unrestricted Unions
- Constant Expressions
- The New Keyword
constexpr
- Unicode Support
- Unicode Types
- Prefixes
- String Literals
- New Keywords for Class Design
override
For Controlled Overwriting of Methodsfinal
For Finalizing Methods and Classes
- Constructor Inheritance
- Constructor Delegation
- New Initialization Syntax
- Initialization Sequences
- The
std::initializer_list<T>
Container - Constructors with Value Lists
- The
- The R-Value Reference
- The Move Constructor
- Copyability and Movability of Objects
- The Use of
std::move()
- The application of
std::forward<T>()
in Templates
- Type Traits
static_assert
- The New Possibilities of the Directive
using
- Template Aliases
- Namespace Association
- Lambdas
- Subsequent Definition of Return Types
- Referencing Lambda Call Contexts
- Copying Lambda Call Contexts
- Variadic Templates
- The Thread Support of the Standard Library
- The Basic Mechanisms of Threading
- Mutexes
- Synchronizing and Condition Variables
- Atomic Operations
- Atomic Types
- Thread Local Storage
- Threading with Lambdas (closures)
- Futures
- Smart Pointers
std::unique_ptr<T>
std::shared_ptr<T>
std::weak_ptr<T>
- New Containers
std::forward_list<T>
std::unordered_set<T>
std::unordered_map<T>
- Regular Expressions
- Generic Lambda Expressions
- Deduction of the Function Return Type
- Binary Literals
- Number Group Separator in Literals
- The
deprecated
Attribute - More Complex
constexpr
Functions - Variable Templates
Complements with C++17
- Declarations in
if
andswitch
Clauses - Inline Variables
- Compile time decisions with
if constexpr()
constexpr
Lambdas- Structured Binding and Decomposing
- Standard Attributes
- Fold Expressions
- Template Argument Deduction for Classen Templates
- Deduction Guides
- Non Type Template Parameters with
auto
- Initializing Parent Classes over the Uniform Initialization
- The Short Form of
static_assert()
- The Wrapper Types:
std::optional
std::any
std::variant
std::shared_mutex
std::byte
- The File System Library
- The Extension of the Type Traits Library
- Parallel Algorithms
The seminar introduces the new standard through theory and practice. After the theoretical parts, practical exercises are being introduced so that the applicability of the new language and library elements can be tested by the participant.
The current versions of regular productive compilers usually support the C++17 standards. The best support is delivered by Clang C++ compiler closely followed by the GNU C++ compiler. The operating system used in the seminar is irrelevant. Usually it is Linux, Windows or MacOSX. Any other UNIX Systems can also be adopted.
Last modified 10.07.2021