Author(s): David Abrahams
Series: C++ in-depth series
Publisher: Addison-Wesley
Year: 2005
Language: English
Commentary: Bookmarks Added
Cover
Half Title
The C++ In-Depth Series
Title Page
Copyright
Table of Contents
Preface
Acknowledgments
Making the Most of This Book
Supplementary Material
Trying It Out
Chapter 1. Introduction
Section 1.1. Getting Started
Section 1.2. So What's a Metaprogram?
Section 1.3. Metaprogramming in the Host Language
Section 1.4. Metaprogramming in C++
Section 1.5. Why Metaprogramming?
Section 1.6. When Metaprogramming?
Section 1.7. Why a Metaprogramming Library?
Chapter 2. Traits and Type Manipulation
Section 2.1. Type Associations
Section 2.2. Metafunctions
Section 2.3. Numerical Metafunctions
Section 2.4. Making Choices at Compile Time
Section 2.5. A Brief Tour of the Boost Type Traits Library
Section 2.6. Nullary Metafunctions
Section 2.7. Metafunction Definition
Section 2.8. History
Section 2.9. Details
Section 2.10. Exercises
Chapter 3. A Deeper Look at Metafunctions
Section 3.1. Dimensional Analysis
Section 3.2. Higher-Order Metafunctions
Section 3.3. Handling Placeholders
Section 3.4. More Lambda Capabilities
Section 3.5. Lambda Details
Section 3.6. Details
Section 3.7. Exercises
Chapter 4. Integral Type Wrappers and Operations
Section 4.1. Boolean Wrappers and Operations
Section 4.2. Integer Wrappers and Operations
Section 4.3. Exercises
Chapter 5. Sequences and Iterators
Section 5.1. Concepts
Section 5.2. Sequences and Algorithms
Section 5.3. Iterators
Section 5.4. Iterator Concepts
Section 5.5. Sequence Concepts
Section 5.6. Sequence Equality
Section 5.7. Intrinsic Sequence Operations
Section 5.8. Sequence Classes
Section 5.9. Integral Sequence Wrappers
Section 5.10. Sequence Derivation
Section 5.11. Writing Your Own Sequence
Section 5.12. Details
Section 5.13. Exercises
Chapter 6. Algorithms
Section 6.1. Algorithms, Idioms, Reuse, and Abstraction
Section 6.2. Algorithms in the MPL
Section 6.3. Inserters
Section 6.4. Fundamental Sequence Algorithms
Section 6.5. Querying Algorithms
Section 6.6. Sequence Building Algorithms
Section 6.7. Writing Your Own Algorithms
Section 6.8. Details
Section 6.9. Exercises
Chapter 7. Views and Iterator Adaptors
Section 7.1. A Few Examples
Section 7.2. View Concept
Section 7.3. Iterator Adaptors
Section 7.4. Writing Your Own View
Section 7.5. History
Section 7.6. Exercises
Chapter 8. Diagnostics
Section 8.1. Debugging the Error Novel
Section 8.2. Using Tools for Diagnostic Analysis
Section 8.3. Intentional Diagnostic Generation
Section 8.4. History
Section 8.5. Details
Section 8.6. Exercises
Chapter 9. Crossing the Compile-Time/Runtime Boundary
Section 9.1. for_each
Section 9.2. Implementation Selection
Section 9.3. Object Generators
Section 9.4. Structure Selection
Section 9.5. Class Composition
Section 9.6. (Member) Function Pointers as Template Arguments
Section 9.7. Type Erasure
Section 9.8. The Curiously Recurring Template Pattern
Section 9.9. Explicitly Managing the Overload Set
Section 9.10. The “sizeof Trick”
Section 9.11. Summary
Section 9.12. Exercises
Chapter 10. Domain-Specific Embedded Languages
Section 10.1. A Little Language ...
Section 10.2. ... Goes a Long Way
Section 10.3. DSLs, Inside Out
Section 10.4. C++ as the Host Language
Section 10.5. Blitz++ and Expression Templates
Section 10.6. General-Purpose DSELs
Section 10.7. The Boost Spirit Library
Section 10.8. Summary
Section 10.9. Exercises
Chapter 11. A DSEL Design Walkthrough
Section 11.1. Finite State Machines
Section 11.2. Framework Design Goals
Section 11.3. Framework Interface Basics
Section 11.4. Choosing a DSL
Section 11.5. Implementation
Section 11.6. Analysis
Section 11.7. Language Directions
Section 11.8. Exercises
Appendix A. An Introduction to Preprocessor Metaprogramming
Section A.1. Motivation
Section A.2. Fundamental Abstractions of the Preprocessor
Section A.3. Preprocessor Library Structure
Section A.4. Preprocessor Library Abstractions
Section A.5. Exercise
Appendix B. The typename and template Keywords
Section B.1. The Issue
Section B.2. The Rules
Appendix C. Compile-Time Performance
Section C.1. The Computational Model
Section C.2. Managing Compilation Time
Section C.3. The Tests
Appendix D. MPL Portability Summary
Bibliography
Index