07 Dec 2021

Mod(C++) Intermediate

Mod(C++) Intermediate is a two day training course. It is ideal for people who have some C++ experience or that have taken Mod(C++) Fundamentals.

Oslo Subway Escalator

Mod(C++) Intermediate

Mod(C++) Intermediate is a two day training course. It is ideal for people who have some C++ experience or that have taken Mod(C++) Fundamentals.

More advanced topics

Taken together Mod(C++) Fundamentals and Mod(C++) Intermediate will give a good foundation for a modern C++ programmer.

Practical information

The exercises will be done in a CMake based project. The students will need a development environment, a rich IDE is recommended, for example Visual Studio Code and Jetbrains CLion. A GitHub account will be useful.

Students are assumed to have some C++ experience or should have taken Mod(C++) Fundamentals. They should be working in ( or looking to work in) a C++ project.

Trainers

The course has been authored by Corentin Jabot and Patricia Aas. Between them they have almost 30 years of experience in C++, working on everything from games to browsers and embedded.

Two-day training

The Intermediate course gives the students a deeper understanding of how one should think and program in “Modern C++” ( C++11/14/17/20). The exercises will all be based around a 2D graphics game inspired by Ms. Pac-Man. Topics covered in the course include:

Day 1 - Generic programming “thinking”

  • Introduction to the training Presentation of the project
  • Function overloading
  • Operators
  • Class templates, function templates, non-type parameters
  • Aliases and and alias templates
  • std::variant and std::visit
  • std::tuple and structured bindings
  • Variadic templates, fold expressions and parameter packs

Day 2 -Modern C++ Features

  • Ranges
  • std::string_view and std::span
  • Constexpr and Consteval
  • Concepts
  • Special member functions (Rule of Five/Zero)
  • Pragmatic introduction to move semantics and return value optimizations
  • Safety: Riskier constructs in C++ and how to minimize their impact
  • Conclusion and review