Odin was allocated from a pool of hippies in the middle of the forest. He spent most of his career designing electronic circuits and programming micro controllers in assembler. One day after having shot himself in the foot particularly badly a friend introduced him to C++, a seriously powerful and ongoing addiction followed. Odin has authored many proof of concept libraries in the embedded field and is trying to revolutionize this domain. Odin co-authored the
kvasir::mpl library, co-founded the embo.io conference and was a heavy contributor to the brigand library. In his day job, he teaches people how to shoot themselves in the foot less and get more from their compiler, both with his in-house team as well as in a training and consulting role.
Over my career I have given a few metaprogramming talks, however I think this library has reached a point where one can start teaching it from a higher level of abstraction. In this talk, after a brief review of the abstract machine we are programming against (the type system), I would like to show how the boost.tmp library (not yet submitted to boost) offers a relatively feature complete DSL with which one can meet the vast majority of metaprogramming needs with no disambiguators and odd keywords. We can even benefit from the added clarity of a DSL without increasing compilation time. We will also explore other strategies of SFINAE use, more efficient use of type_traits as well as an introduction to the new fusion extension allowing computations on heterogeneous packs of run-time arguments.