Advanced Modern C++ Training

Boost Your Productivity with Modern C++
Now with C++17

by Peter Gottschling

Mastering C++ is an intriguing challenge that can be utterly satisfactory. This complex, multi-paradigm language allows us to write software of highest performance with well-structured and smoothly growing programs. The power of C++ was tremendously raised with the new features of C++11 and C++14 such as type deduction, lambdas, rvalues, initializer lists – to name only a few. And C++17 will add some more interesting feature like folding and structured binding.


Brainstorming on future C++ with Bjarne Stroustrup


To tackle this challenge, I offer this intensive training mainly based on my book “Discovering modern C++”. Within three or four days, you will see, discuss, and apply a wide spectrum of advanced features and dive into the world of modern C++ programming.

Target Audience

The course is designed for software developers who aim for excellent software characterized by intuitive interfaces and maximal performance. There is a chance that after this seminar you are still not a perfect C++ programmer. My goal for this week is that you can afterwards program perceivably more productively. That your programs are usable more flexibly and nonetheless explore the hardware as efficiently as possible. That your software becomes clearer and simpler and thus more readable and more maintainable. That the cooperation with your team will also be more productive.


Basic knowledge in C++ and experience in practice are required.


  • New techniques
    • Range-based for-loops (C++11)
    • RValues and move semantics (C++11)
    • Initializer lists (C++11)
    • {} vs. ()? (C++11)
    • Folding (C++17)
  • Templates (generic programming)
    • Function templates
    • Class templates
    • Variadic Templates (C++11)
    • Concepts (C++20?) (*)
    • Specialization
    • Template arguments that are not types
    • Functors
    • Safe downcast without overhead (*)
  • Type deduction in detail
    • Template arguments
    • auto (C++11)
    • Structured binding (C++17)
    • decltype (C++11)
    • decltype(auto) (C++14)
    • Deduced return type (C++14)
    • Deduced class types (C++17)
  • Lambda (C++11)
    • Foundations
    • Generic lambdas (C++14)
    • Extended capture (C++14)
  • Standard Template Library
    • Iterator concept
    • Containers (partially C++11)
    • Functions (partially C++11)
    • Concurrent algorithms (C++17)
  • Meta-programming
    • Let the compiler compute (*)
    • Providing type informations
    • Expression templates
    • constexpr if (C++17)

(*) These topics are omitted or significantly shortened in three-day courses. Other topics are discussed in less detail during shorter courses.

Free Consulting Included

As extra service I offer you—interest and non-disclosure of company secrets provided—to discuss and refactor your own software (as far as time allows). We will not aim for the perfect program but consider for real-world software examples various implementation options and discuss their adventages and disadvantages. (Not included in 3-day training.)


Peter Gottschling is the author of the advanced C++14 book "Discovering Modern C++", the Matrix Template Library 4, co-author of the Boost Graph Library and other scientific libraries. He is vice-chair of DIN's programming language group and was (the last) head of the German delegation in the ISO committee for C++ standardization. He is managing director of SimuNova and taught C++ in numerous profesional trainings and academically at TU Dresden, TU Berlin and Indiana University. 


To register go to the main training page.

The location of the courses is also indicated on the main training page.

© 2021 SimuNova UG