Modern C++

--- New features in C++11/C++14/C++17/C++20 ---


Who should attend?

Software developers who want to get acquainted with the new language features of the most recent C++ standards C++11, C++14, C++17 and C++20.

Pre-requisites:

A good working knowledge of "Classical C++" (language features of C++98/03 including templates). Potentially existing foreknowledge gaps can optionally be filled by a customised version of the course "C++ Refresher".

Duration:

3 days

Course Description:

The new language standards since C++11 increased the scope of the C++ programming language considerably. Apart from many innovations, which mainly simplify the reading and writing of programs, the language standards also introduced new concepts, which require a good understanding of their objective and behaviour, before they can be applied beneficially. This course starts from classical C++ knowledge and shows which new language
features have been introduced in C++11, C++14, C++17 and C++20. Additionally Smart Pointers, as part of the C++ standard library, are covered in this training. Further innovations of the C++ standard library are subject of other courses, such as "C++ Multithreading".


Course Outline:

  • Uniform Initialisation
  • Range-Based Loops
  • Automatic Type Deduction (auto, decltype)
  • Scoped Enumerations
  • Rvalue References and Move Semantics
  • Constant Expressions (constexpr)
  • Lambda Functions and Lambda Captures
  • Special Member Functions
  • Constructor Delegation
  • Inheriting Constructor, override and final
  • Variadic Templates
  • Perfect Forwarding
  • Smart Pointers (unique/shared/weak_ptr)
  • Binary Literals and Digit Separators
  • Raw String Literals
  • User Defined Literals
  • Explicit Type Conversion
  • noexcept
  • static_assert
  • Attributes
  • Variable Templates
  • Automatic Type Deduction for Template Classes
  • Variable Initialisation in if and switch
  • Data Type byte
  • Type Traits
  • constexpr if
  • Template Parameter List for Generic Lambda Functions
  • Designated Initializers
  • Concepts
  • 3-Way-Comparison (“Space Ship Operator”)
  • Modules
  • Compile Time Support Extensions

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.