Modern C++: When Efficiency Matters [2022 class archive]

Modern C++: When Efficiency Matters is a three-day online training course with programming exercises, taught by Andreas Fertig. It is offered online from 09:00 to 15:00 Aurora time (MDT), 11:00 to 17:00 EDT,  17:00 to 23:00 CEST, Wednesday, September 7th through Friday, September 9th, 2022 (before the conference).

Course Description

You will learn about various features of modern C++, how they work, where to use them, and how they translate to code. With that knowledge, you understand what each feature brings you and its costs regarding code size and performance.

You will learn how to write less code and get the same result. Less code helps you to save human resources when it comes to maintenance and debugging.

In times where a lot of applications are battery-powered, saving run-time is a great asset. As part of this class, you will learn to control the footprint and the speed of your binary.

You will learn all topics with exercises and live demos in C++ Insights and Compiler Explorer.

Prerequisites

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

Course Topics

  • Type-deduction surprises
  • Range-based for-loops how they work and what you have to watch out for
  • How noexcept helps you
  • How a std::initializer_list works
  • Scope control using if or switch with initialization
  • Safe and efficient constructors
    • In-class member initialization
    • Constructor inheritance and its trap
  • Under the hood of lambdas
    • Lambda captures and their implications
    • Generic as well as templated (a preview into C++20)
  • Structured bindings
  • Templates
    • Variadic templates
    • Recursive variadic templates vs. fold-expressions
    • Guidelines for efficient use of templates
  • Devirtualize your virtual functions with `final`
  • How a local non-trivial `static` variable works
  • The power of compile-time vs. run-time
    • How and when to apply constexpr
    • How to achieve constant initialization
    • Select only the data you need with constexpr if
  • Move-semantics
    • Move or copy?
    • The difference between std::move vs std::forward
    • Make your move-operations noexcept: noexcept, move, and STL containers
  • Know the costs of the abstraction: shared-/unique-ptr
  • Using the STL efficiently
    • Choosing the right container for your data
    • Best to use container methods for performance

Register Here

Course Instructor

Andreas Fertig

Andreas Fertig, CEO of Unique Code GmbH, is an experienced trainer and lecturer for C++ for standards 11 to 20.

Andreas is involved in the C++ standardization committee, in which the new standards are developed. At international conferences, he presents how code can be written better. He publishes specialist articles, e.g., for iX magazine, and has published several textbooks on C++.

With C++ Insights (https://cppinsights.io), Andreas has created an internationally recognized tool that enables users to look behind the scenes of C++ and thus to understand constructs even better.

Before working as a trainer and consultant, he worked for Philips Medizin Systeme GmbH for ten years as a C++ software developer and architect focusing on embedded systems.

You can find Andreas online at andreasfertig.com.