C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, 1st edition

Published by Addison-Wesley Professional (December 10, 2004) © 2005

  • David Abrahams
  • Aleksey Gurtovoy
Products list

Details

  • A print text
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com

This product is expected to ship within 3-6 business days for US and 5-10 business days for Canadian customers.

Simply put, a metaprogram is a program which generates or manipulates

program code. The ability to programmatically create software allows

programmers to work at a higher level of abstraction appropriate to the

problem domain, and allows the resulting code to be reconfigured without loss

of efficiency. Ever since generic programming was introduced to C++,

programmers have discovered myriad "template tricks" for manipulating

programs *as they are compiled*, effectively eliminating the barrier between

program and metaprogram. While the excitement generated by these

capabilities among C++ experts has reached the community at large, their

practical application remains out-of-reach for most programmers. This book

provides the neccessary foundation to make template metaprogramming

practical for everyone.

Preface.

Acknowledgments.

Making the Most of This Book.

1. Introduction.

    Getting Started.

    So What's a Metaprogram?

    Metaprogramming in the Host Language.

    Metaprogramming in C++.

    Why Metaprogramming?

    When Metaprogramming?

    Why a Metaprogramming Library?

2. Traits and Type Manipulation.

    Type Associations.

    Metafunctions.

    Numerical Metafunctions.

    Making Choices at Compile Time.

    A Brief Tour of the Boost Type Traits Library.

    Nullary Metafunctions.

    Metafunction Definition.

    History.

    Details.

    Exercises.

3. A Deeper Look at Metafunctions.

    Dimensional Analysis.

    Higher-Order Metafunctions.

    Handling Placeholders.

    More Lambda Capabilities.

    Lambda Details.

    Details.

    Exercises.

4. Integral Type Wrappers and Operations.

    Boolean Wrappers and Operations.

    Integer Wrappers and Operations.

     Exercises.

5. Sequences and Iterators.

    Concepts.

    Sequences and Algorithms.

Need help? Get in touch