
C++ Template Metaprogramming
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
A metaprogram is a program that generates or manipulates program code. 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 excitement among C++ experts about these capabilities has reached the community at large, their practical application remains out of reach for most programmers. This book explains what metaprogramming is and how it is best used. It provides the foundation you'll need to use the template metaprogramming effectively in your own work.
This book is aimed at any programmer who is comfortable with idioms of the Standard Template Library (STL). C++ power-users will gain a new insight into their existing work and a new fluency in the domain of metaprogramming. Intermediate-level programmers who have learned a few advanced template techniques will see where these tricks fit in the big picture and will gain the conceptual foundation to use them with discipline. Programmers who have caught the scent of metaprogramming, but for whom it is still mysterious, will finally gain a clear understanding of how, when, and why it works. All readers will leave with a new tool of unprecedented power at their disposal-the Boost Metaprogramming Library.
Note: CD materials are only available with the print edition.
All prices
More details
Other editions
Additional editions

Persons
Aleksey Gurtovoy is a technical lead for MetaCommunications and a contributing member of the Boost C++ community. Aleksey is the original author of the Boost Metaprogramming Library. He has been working with C++ since 1993, and holds a M.S. degree in computer science from Krasnoyarsk Technical State University, Russia.
Content
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.
Iterators.
Iterator Concepts.
Sequence Concepts.
Sequence Equality.
Intrinsic Sequence Operations.
Sequence Classes.
Integral Sequence Wrappers.
Sequence Derivation.
Writing Your Own Sequence.
Details.
Exercises.
6. Algorithms.
Algorithms, Idioms, Reuse, and Abstraction.
Algorithms in the MPL.
Inserters.
Fundamental Sequence Algorithms.
Querying Algorithms.
Sequence Building Algorithms.
Writing Your Own Algorithms.
Details.
Exercises.
7. Views and Iterator Adaptors.
A Few Examples.
View Concept.
Iterator Adaptors.
Writing Your Own View.
History.
Exercises.
8. Diagnostics.
Debugging the Error Novel.
Using Tools for Diagnostic Analysis.
Intentional Diagnostic Generation.
History.
Details.
Exercises.
9. Crossing the Compile-Time/Runtime Boundary.
for each.
Implementation Selection.
Object Generators.
Structure Selection.
Class Composition.
(Member) Function Pointers as Template Arguments.
Type Erasure.
The Curiously Recurring Template Pattern.
Explicitly Managing the Overload Set.
The "sizeof Trick".
Summary.
Exercises.
10. Domain-Specific Embedded Languages.
A Little Language.
Goes a Long Way.
DSLs, Inside Out.
C++ as the Host Language.
Blitz++ and Expression Templates.
General-Purpose DSELs.
The Boost Spirit Library.
Summary.
Exercises.
11. A DSEL DesignWalkthrough.
Finite State Machines.
Framework Design Goals.
Framework Interface Basics.
Choosing a DSL.
Implementation.
Analysis.
Language Directions.
Exercises.
Appendix A. An Introduction to Preprocessor Metaprogramming.
Motivation.
Fundamental Abstractions of the Preprocessor.
Preprocessor Library Structure.
Preprocessor Library Abstractions.
Exercise.
Appendix B. The typename and template Keywords.
The Issue.
The Rules.
Appendix C. Compile-Time Performance.
The Computational Model.
Managing Compilation Time.
The Tests.
Appendix D. MPL Portability Summary.
Bibliography.
Index.
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.