Simply put, a metaprogram is a program which generates or manipulatesprogram code. The ability to programmatically create software allowsprogrammers to work at a higher level of abstraction appropriate to theproblem domain, and allows the resulting code to be reconfigured without lossof efficiency. Ever since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulatingprograms *as they are compiled*, effectively eliminating the barrier betweenprogram and metaprogram. While the excitement generated by thesecapabilities among C++ experts has reached the community at large, theirpractical application remains out-of-reach for most programmers. This bookprovides the neccessary foundation to make template metaprogrammingpractical for everyone.
David Abrahams is a founding member and moderator of the Boost C++ library development group. Dave has been an ANSI/ISO C++ committee member since 1996, where he is best known for contributing a theory, specification, and implementation of exception handling for the C++ standard library. His company, Boost Consulting, provides Boost-related support and development services and professional training in the art of software construction.
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.