Modern C++ Design Patterns

Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.

    This training class explores modern C++ design and the modern forms of classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enables programmers to create professional, high-quality code. Amongst others it will answer the following questions:

    • How does good C++ design with a minimum of dependencies look like?
    • What are the most important rules for robust, maintainable, and sustainable design?
    • What are the most common pitfalls in C++ software design?
    • Why does classical C++ design based on inheritance hierarchies fail so often?
    • How are the classic design patterns implemented in modern C++?
    • What are alternatives to the classic design patterns?

    After this course, participants will ...
    ... have a detailed understanding of the essential design principles;
    ... understand the benefits of separation of concerns;
    ... be able to design code with minimum dependencies;
    ... have an impression of the modern alternatives of classic design patterns;
    ... have gained knowledge about modern design techniques;
    ... understand how std::function, std::any, and ranges work;
    ... favor composition over inheritance;
    ... avoid the usual pitfalls in the context of inheritance;
    ... know about the importance of value semantics;
    ... comprehend the advantages of non-intrusive design.

    Participants are required to have at least two to three years of C++ experience. The course expects that all participants are familiar with the syntax of the language and have used inheritance and templates before.

    Computer Setup
    For the hands-on programming tasks, you are expected to use your own machine. Any operating system (Windows, Linux, MacOS, ...), any IDE/editor (MS Visual Studio, CLion, vi, emacs, ...) and any compiler capable of at least C++14 (GCC, Clang, MSVC, ...) can be used

    Klaus Iglberger
    C++ Trainer/Consultant

    Klaus Iglberger is a freelancing C++ trainer and consultant. He has finished his PhD in computer science in 2010 and since then is focused on large-scale C++ software design. He shares his experience in popular advanced C++ courses around the world (mainly in Germany, but also the EU and US). Additionally, he is the author of "C++ Software Design" (, the initiator and lead designer of the Blaze C++ math library ( and an organizer of the Munich C++ user group (

    Programutvikling uses cookies to see how you use our website. We also have embeds from YouTube and Vimeo. How do you feel about that?