Nicolai M. Josuttis: IT-Communication    Training: C++17 and its Standard Library

prev up next

Title: C++17 and its Standard Library
(combine with the Modern C++ training)
in German
Audiance: Software developers, programmers
Format: Inhouse workshop with excercises
Background: Programming in C++
Duration: 1 day

C++17 is the next evolution in modern C++ programming, which is already at least partially supported by the latest version of gcc, clang, and Visual C++. Although it is not as big a step as C++11, it contains a large number of small and valuable language and library features, which will change the way we program in C++. As usual, not everything is self-explanatory, combining new features gives even more power, and there are hidden traps.

This training presents all major language and library features of C++17. It covers the motivation and context of each new feature with examples and background information. The focus is on how these features impact day-to-day programming, what it means to combine them, and how to benefit from C++17 in practice.

As a well-known expert of C++, author of several books and an active member of the C++ standardization committee, Nicolai Josuttis will provide this training with a lot of background information. You will understand the new language features and libraries and the benefit of modern C++ to understand and be prepared for a switch to C++17 in commercial software systems.

  • Basic Language Features:
    • Structured Bindings
    • if and switch with initializers
    • Inline variables
    • Aggregates with base classes
    • Mandatory RVO, copy elision, and materialization
    • Nested namespaces syntax
    • static_assert() with one argument
    • Lambda improvements (constexpr support, capturing *this)
    • #__has_include
    • New Defined Expression Evaluation Order
    • Relaxed Enumeration Initialization
    • Fixes for List Initialization with auto
    • noexcept and the Type System
    • Heap allocation with alignment
    • Progress Guarantees
    • UTF8 Character and Hexadecimal Floating-Point Literals
    • New Attributes
  • Template Improvements:
    • Class Template Argument Deduction and deduction Guides
    • Compile-time if (constexpr if)
    • Fold Expressions
    • Pack Expansion in Using Declarations
    • Nontype Template Parameters with Placeholders (auto/decltype(auto))
    • Type Traits Improvements
    • std::void_t, std::bool_constant, std::invoke()
    • std::uncaught_exceptions() and std::launder()
  • New Basic Library Types:
    • std::optional<>
    • std::variant<>
    • std::any
    • std::byte
    • std::string_view
    • Filesystem Library:
  • Other Library Features:
    • Parallel STL
    • New Algorithms (clamp(), for_each_n(), reduce(), exclusive_scan(), sample(), ...)
    • Boyer Moore (Horspool) Substring searchers
    • Improvements to existing Containers
    • Elementary String<->Numeric Conversions
    • shared_mutex, scoped_lock, is_always_lock_free()
    • Several small fixes

Nicolai M. Josuttis is an well-known international author, trainer, speaker, and expert of C++.

He has written several books on object-oriented programming and C++, including the including the best selling de-facto standards The C++ Standard Library - A Tutorial and Reference, C++ Templates - The Complete Guide, C++ Move Semantics- The Complete Guide, and C++17 - The Complete Guide.

He is an active member of the C++ Standard Committee since 1996.


In English, this tutorial is only available as inhouse training. Public German trainings are available.


Contact Nicolai Josuttis
Tel.: +49 531 129 8886

Of course, the tutorial can get customized according to your needs. Especially combined with Modern C++ or a C++ Workshop.

prev up next

Copyright 2021 by Nicolai M. Josuttis