BoostPro Computing

BoostCon 2010

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.

News

  • BoostCon 2011: Save the Date

    Mark your calendars! BoostCon 2011 is scheduled for May 15-20, 2011 in Aspen, Colorado.

    More...

  • C++ Next Blog update

    Dave and Sean Parent have organized a study group for Elements of Programming. Are you in?

    More...

  • C++0x, Hot or Not?

    Dave recently visited Sioux Embedded Systems in the Netherlands.

    More...