Modern C++1x Design


This workshop is part of NDC Oslo 2018

The book "Modern C++ Design" popularized what became colloquially known as modern C++, a refreshing style of high-level programming that gave away inheritance and polymorphism in favor of templates and compile-time metaprogramming. Over time, support for this way of writing code has been significantly enhanced in C++11 and C++14. This seminar discusses the core topics of Modern C++ Design in the context of C++1x. With better language support certain artifacts are much easier to design and implement. More importantly, new opportunities are now available.

Course Highlights

Participants will gain:

  • A good understanding of Design Patterns and their place in an engineer's toolchest.
  • Mastery of policy-based design that uses C++ generic programming to implement highly reusable designs.
  • A comprehensive introduction to C++1x core language features and library artifacts specifically targeted at template-based programming.
  • A good understanding of classic design patterns, their tradeoffs, and state-of-the-art generic C++ implementation for each.


Please note: This course is being actively developed. The actual course might contain more topics and slight variations on the topics outlined below.

  • Recap of Design Patterns
  • Recap of Policy-Based Design
  • Variadic Templates
  • std::tuple
  • Deferred std::tuple expansion
  • Typelists and policy parameters
  • Factory Design Pattern
  • Visitor Design Pattern
  • Chain of Responsibility Design Pattern
  • Declarative Control Flow
  • Unifying Exception with Error Codes
  • Policy-Based Memory Allocation
  • Generic Locking
  • Robert Martin's Principles of Object-Oriented Design
    • SRP: The Single Responsibility Principle
    • OCP: The Open Closed Principle
    • LSP: The Liskov Substitution Principle
    • ISP: The Interface Segregation Principle
    • DIP : The Dependency Inversion Principle
    • REP: The Release Reuse Equivalency Principle
    • CCP: The Common Closure Principle
    • CRP: The Common Reuse Principle
    • ADP: The Acyclic Dependencies Principle
    • SDP: The Stable Dependencies Principle
    • SAP: The Stable Abstractions Principle

Attendee Profile

This class targets senior engineers and architects of C++-based systems. Familiarity with the major features of C++ is required. Template programming and C++1x concepts will be introduced.


The format is a highly interactive lecture. Questions during the lecture are encouraged. Use of laptops for trying out examples is allowed.


09:00 - 17:00