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 book presents all the new language and library features in 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 this in practice.

This training has the goal to teach all important concepts and features of the new standard (core langauge features and libraries). You will understand which individual features came with C++17and how C++17 changes the way you programm in C++.

Well designed practical excercises give the ability to experience the effects of C++17 using different compilers including gcc/g++, Visual C++, and clang.

As well-known expert of C++, author of several books (including the new C++11 edition of "The C++ Standard Library"), and active member of the C++ standardization commitee, 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 independent technical consultant with multiple experience about technical management and programming in the telecommunication, traffic, finance, and manufacturing industries. His main focus is to bring software systems into operations.

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, 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 2016 by Nicolai M. Josuttis