What’s new in C++ 11, C++ 14, C++ 17 and C++ 20

Content „What’s new in C++11, C++14, C++17 and C++20“

A C++ training for experienced C++ programmers who want to learn the latest C++11, C++14, C++17 and C++2020 extensions for professional use and who are looking for a sound orientation in the variety of these language extensions.

C++ has been greatly extended in recent years (C++11, C++14, C++17 and C++20). The new standard is called C++20 and makes programming with C++ easier, safer, more elegant and more efficient. The extensions include

  • new language elements such as initializer lists (which simplify initializations and check for type safety), lambda expressions (which simplify callback functions and the use of STL algorithms), simplifications in the definition of classes, safer conversions, move semantics (which is faster), etc. .
  • new standard library (STL) classes such as faster hash containers, smart pointers (which often avoid memory leaks), multithreading classes (for parallel execution of threads), Unicode strings, etc.
  • parallel algorithms of the standard library, which are significantly faster than before C++17 simply by specifying another argument.

These enhancements are fully included in Visual Studio 2022 and will be presented comprehensively and compactly in this seminar. Along with the new language elements, the C++ Core Guidelines are also presented with „best practices“ for security, performance and maintainability.

The contents of this course can be adapted to the wishes of the participants.

1. What’s new in the Visual Studio 2022 IDE

  • New features for the editor, refactoring, debugger, Solution Explorer etc.
  • The Visual Studio C++ Core Guideline Checker

2. Core features from C++11, C++14 and C++17

  • compiler feature test macros
  • new integer data types, separators and binary literals
  • type inference: implicit type assignments with auto and decltype
  • type-safe initialization with initialization lists
  • inline variables
  • Variable definitions and constexpr in if and switch
  • The null pointer literal nullptr
  • type-safe enumeration types (enum class)
  • constexpr values and functions
  • The range-based for loop
  • Extensions for classes
    • virtual functions with override
    • final, extended friend declarations
    • =delete, =default
    • Delegating constructors and implicitly created constructors
    • Explicit constructors and conversion functions
    • initializers for non-static data elements
    • rule of zero
  • overloaded operators with the <=> operator
  • std::array vs C arrays
  • Explicit constructors and conversion functions
  • move semantics
    • R-value references
    • In the standard library
    • Implement in own classes
  • Compile-time assert: static_assert
  • Attributes
  • Modules

3. Extensions for strings

  • literals of type std::string and raw string literals
  • string conversions (std::to_string, std::format, etc.)
  • std::string_view
  • Unicode strings
  • regular expressions

4. Exception-Handling

  • Exception-safety
  • noexcept

5. Extensions of the STL

  • move Semantik in der STL
  • neue Algorithmen
  • Container mit polymorphen Allokatoren
  • ungeordnete assoziative Container
  • Tupel, std::variant
  • Filesystem

6. Function objects and lambda expressions

  • The call operator (), predicates and arithmetic function objects
  • callback functions
  • The function wrapper std::function
  • Lambda expressions

7. Templates and the STL

  • Generische Funktionen und Klassen: Funktions-und Klassen-Templates.
  • Type Traits
  • Variadische Templates und fold-Ausdrücke
  • Concepts

8. STL-Algorithmen und Lambda-Ausdrücke

  • Generic functions and classes: Function and class templates.
  • Type Traits
  • Variadic templates and fold expressions
  • Concepts

9. Smart Pointer

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • exception_ptr

10. clock and calendar data with chrono

  • clocks (system_clock and steady_clock)
  • time units (durations) and points in time

11. Multithreading

  • Starting threads with thread, jthread and async
  • exceptions in threads
  • critical sections
  • atomic types
  • futures and async
  • condition variables

About this C++ Training

Target audience for this C++ training

Experienced C++ programmers who want to learn the state of the art C++ (C++11, C++14, C++17 and C++20).

Requirements: Good knowledge of C++

Teaching style of the C++ course

Lecture with many examples. A balanced combination of theory and practice.

  • At the beginning of a new topic, an overview of applications, basic ideas and syntax is given.
  • The concepts and the syntax are illustrated by using carefully selected and proven examples. Often, best practices“ are presented.
  • The manuscript contains numerous practical exercises.
  • If desired, tasks from the work of the students can also be dealt with. This should be arranged before the start of the training.

Training Materials

Extensive and detailed training materials (approx. 200 pages) – Full text, no PowerPoint slides containing only keywords. Therefore, the course materials can also be used as a reference at work.

Place and time of this C++ training

This seminar is offered as an inhouse seminar (at your site). The implementation as a face-to-face seminar is preferred, but is also possible as an online seminar. Dates by arrangement.

Duration: 5 days

Lecturer

Prof. Richard Kaiser has been conducting seminars for companies for many years, mainly on software development and the programming languages C#, C++ and C. He knows the requirements of practice and addresses them in detail, both in the basic concepts and in the details. His clients include renowned global corporations and small and medium-sized enterprises. He is the author of several books on C++, most recently „C++ mit Visual Studio 2019“. He was a member of the DIN standardization committee Information Technology NI-22 for many years.

Students feedback

October 2022 +++
Were the learning goals achieved?xxxxxxxx   
Was the seminar duration sufficient for the material?xxxxxxxx  
Learning and working atmospherexxxxxxxx   
About the training documentsxxxxxxxxx  
Overall impression:xxxxxxxx   
      
Professional competence of the trainerxxxxxxxx   
Did the trainer convey the contents clearly and understandably?xxxxxxxx   

Contact Prof. Richard Kaiser