Applied Modern C++: Exploring the Standard Library [2017 class archive]

“Applied Modern C++: Exploring the Standard Library” is a two-day training course with programming exercises taught by Christopher Di Bella. It is offered at the Sheraton Bellevue Hotel from 9AM to 5PM on Saturday and Sunday, September 30th and October 1st, 2017 (immediately after the conference). Lunch is included.

Course Description

C++ has been evolving very rapidly since the advent of C++11, and if you aren’t able to keep yourself up-to-date on what’s happening with respect to the evolution of C++, you might start to feel left behind.

The Standard Library makes up an enormous portion of Standard C++. Its continual growth from C++11 onward might mean that you’re not aware of everything that the library now offers. Do you identify with any of the following?

  • You’ve recently moved from C++98 (or “C++03”) to a more modern Standard
  • You’re relatively new to C++, and have at least six months experience with modern C++
  • You use a lot of handwritten algorithms, such as searching, sorting, removing duplicate entries, and have a lot of in-house testing
  • You use linked lists or maps, and can’t seem to break a bottleneck
  • You dislike std::string, std::vector, or exception handling
  • You use C-style strings or C-style arrays
  • You find yourself handwriting a lot of memory management
  • You’d like string processing in C++ to be easier
  • You’d like to avoid run-time polymorphism, but don’t want to use unions
  • You’ve been meaning to learn more about the Standard Library, but aren’t sure where to start
  • You’re curious about either the Concepts TS or the Ranges TS

If you identify with even one of the above, you will most likely benefit from attending this course. We will be diving into both certain parts of the C++ Standard Library and the newly minted Ranges TS, which is a first step toward a brand new Standard Library v2.

Prerequisites

  • Experience: You are expected to know how to write ordinary C++, preferably C++11 or later, as very little time will be spent on language features
  • Audience: beginner, intermediate, advanced
  • Operating system: Windows, Linux, OS X
  • Software: Docker (we will briefly cover the set-up in class, but it will be ideal for you to have the software installed and know basic use ahead of time).

Course Topics

  1. Basics
    1. std::vector
    2. Standard algorithms survey
  2. String manipulation
  3. Containers
  4. Input and output
  5. Iterators and sentinels
  6. Utilities
    1. std::tuple
    2. std::optional
    3. std::variant
  7. Invocables
  8. Writing a container
    1. What goes into writing a container?
    2. Smart pointers
    3. Exception handling
    4. Advanced dynamic memory management
    5. Was it all really worth the effort in the end?

We will look at practical aspects for most topics: this will sometimes include a case study. For example, we consider a modern, library-based approach to building a customized container.

Thread support and atomic operations are not included in this class. Please attend Anthony Williams’ class if you would like to learn about C++ concurrency in action.

Course Instructor

Christopher Di Bella is a software engineer for Codeplay’s runtime technology in Edinburgh, UK, and is also an avid C++ programmer. He previously worked as a software developer for Nasdaq, and as a university tutor/assistant instructor for the University of New South Wales’ Advanced C++ Programming course in Sydney, Australia. In his spare time, Chris enjoys snowboarding, playing board games, and watching films.