Modern C++1x DesignC++
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.
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
- 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
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