The C++11 and C++14 Seminar

Based on a substantial understanding of C++, this course presents the standard of this programming language ISO/IEC 14882:2011 (more simply known as ISO C++11 or C++11) and the extended standard ISO/IEC 14882:2014 (more simply known as ISO C++14 or C++14). In this context, the changes in the new standards compared to the old ones ISO C++98 and ISO C++03 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
  • Enums with Namespaces
  • 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 Methods
    • final 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 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

Completing with C++14

  • 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

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++14 standards. The best support is delivered by Clang C++ compiler closely followed by the GNU C++ compiler. But Visual C++ from the 2015 version on also provides a good enough implementation of the standards to use it in the seminar. The operating system used in the seminar is irrelevant. Usually it is Linux, Windows or Mac OS X. Any other UNIX System can also be adopted.

Last modified 02.01.2021