C++ Metaprogramming
An intensive hands-on course exploring the concepts, tools, and techniques of metaprogramming in C++ with the field’s leading practitioners.
- learn what metaprogramming is and why it is used.
- build expressive, declarative library interfaces that generate arbitrarily sophisticated executable code such as parsers and matrix multipliers.
- gain first-hand experience with compile-time computation
- learn about Boost libraries that make metaprogramming expressive, fun, and (yes!) easy.
Prerequisites
At least two years C++ experience. Familiarity with the STL and relative comfort writing and using templates. This is a challenging course, most appropriate for advanced C++ programmers.
Format
Five days of lecures and hands-on exercises.
Book
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond by our principal instructor, Dave Abrahams, and Aleksey Gurtovoy.
Topics
- What is Metaprogramming
- How Template Metaprogramming Works
- The Mechanics of Template Instantiation
- Traits and Type Manipulation
- Metafunctions
- Polymorphism and Non-Type Data
- Type sequences
- The Boost Metaprogramming Library
- Compile-Time Iterators
- Compile-Time Algorithms
- Domain-Specific Embedded Languages
- Code Generation with Templates
- Techniques for Meshing Compile-Time and Runtime Computation
- Tuple Metaprogramming with Boost.Fusion
- Preprocessor Metaprogramming with Boost.Preprocessor
- Expression Templates
- The Boost.Proto Expression Template Meta-library
- Understanding Template Errors
- Intentionally Generating Compile-Time Errors
- Compile-Time Performance
- Using Overload Resolution To Improve Metaprogram Speed
Note
Details and duration of this course can be adjusted to accomodate your schedule, interests, and specific development challenges.