Moving to C++17 [2017 Class Archive]

“Moving to C++17: The New Language and Library Features” is a one-day training course with programming examples taught by Nicolai Josuttis. It is offered at the Meydenbauer Conference Center from 9AM to 5PM on Sunday, September 24th, 2017 (immediately prior to the conference). Lunch is included.

Course Description

C++17 is the next evolution in modern C++ programming. 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++. This one-day tutorial presents all the new language and library features in C++17. We’ll cover the motivation and context of each new feature with examples and background information. We’ll focus on how these features impact day-to-day programming and how to benefit from them in practice.

Prerequisites

Students are expected to have a basic knowledge of C++ including C++11.

Students are not required to bring any laptop. We will go through exercises together with the laptop of the presenter.

Course Topics

History of C++17

Language features such as:

  • Structured Bindings
  • Inline variables
  • New control structures (e.g. constexpr if)
  • New aggregate rules
  • Improvements for constexpr
  • Mandatory RVO and copy elision

New template features:

  • Fold expressions
  • Class template argument deduction
  • Non-type templates with placeholder types

New datatypes:

  • std::string_view
  • std::any, std::variant, and std::optional
  • std::byte

Library features:

  • Filesystem library
  • Parallel STL algorithms
  • Container improvements
  • New algorithms and utility functions
  • Small library features

Other bug fixes and notable enhancements

  • Expression evaluation order
  • Type system improvements
  • Deprecated and removed features

Effects when combining multiple features

Course Instructor

Nicholia Josuttis

Nicolai Josuttis (www.josuttis.com) is an independent systems architect, technical manager, author, and consultant. He designs mid-sized and
large software systems for the telecommunication, traffic, finance, and
manufacturing industries.
He is well known in the C++ Community for speaking and writing with
authority about C++ (being the author of The C++ Standard Library and
C++ Templates) but is also an innovative presenter.
He is an active member of C++ standardization committee for almost 20
years now.