At long last, this much-awaited book delivers practical metaprogramming into the hands of the everyday C++ programmer. 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. Product Description Abrahams and Gurtovoy have written something close to a classic. marvelous fun to read. Read the complete book review by Jack J. Woehr, Dr. Dobbs Journal, June 03, 2005 If you´re like me, you´re excited by what people do with template metaprogramming (TMP) but are frustrated at the lack of clear guidance and powerful tools. Well, this is the book we´ve been waiting for. With help from the excellent Boost Metaprogramming Library, David and Aleksey take TMP from the laboratory to the workplace with readable prose and practical examples, showing that compile-time STL is as able as its runtime counterpart. Serving as a tutorial as well as a handbook for experts, this is the book on C++ template metaprogramming. -Chuck Allison, Editor, The C++ Source C++ Template Metaprogramming sheds light on the most powerful idioms of today´s C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer. 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. The companion CD-ROM contains all Boost C++ libraries, including the Boost Metaprogramming Library and its reference documentation, along with all of the book´s sample code and extensive supplementary material. Features + Benefits At long last, this much-awaited book delivers practical metaprogramming into the hands of the everyday C++ programmer. ° Presents the C++ Metaprogramming Library (MPL), a framework of powerful tools providing unprecedented new capability to the C++ power-user. ° Bjarne Stroustrup gave the equivalent of a blank check to the authors--meaning that he would accept anything they wrote into his Series, given their overwhelming expertise in this domain. ° CD-ROM contains the entire Boost Library. Backcover Abrahams and Gurtovoy have written something close to a classic. marvelous fun to read. Read the complete book review by Jack J. Woehr, Dr. Dobbs Journal, June 03, 2005 If you´re like me, you´re excited by what people do with template metaprogramming (TMP) but are frustrated at the lack of clear guidance and powerful tools. Well, this is the book we´ve been waiting for. With help from the excellent Boost Metaprogramming Library, David and Aleksey take TMP from the laboratory to the workplace with readable
C++ Template Metaprogramming:Concepts, Tools, and Techniques from Boost and Beyond David Abrahams, Aleksey Gurtovoy
C++ Template Metaprogramming:Concepts, Tools, and Techniques from Boost and Beyond. Auflage 2005 David Abrahams, Aleksey Gurtovoy
Advanced Metaprogramming in Classic C++ aims to be both an introduction and a reference to C++ template metaprogramming (TMP); TMP is presented in the book as a set of techniques that will bring a new style in C++ and make code exceptionally clear and efficient. The book deals with language aspects, design patterns, examples and applications (seen as case studies). Special emphasis is put on small reusable techniques that will improve the quality of daily work. What makes the book exceptional is the level of understanding of the concepts involved imparted by the author. This is not just a rote overview of metaprogramming. You will truly understand difficult topics like static assertions, how to write metafunctions, overload resolution, lambda expressions, and many others. More than that, you will work through them with practical examples guided by the author´s frank explanations. This book requires you to think and to learn and to understand the language so that you can program at a higher level.
Source: Wikipedia. Pages: 109. Chapters: Bjarne Stroustrup, Comparison of Java and C++, Template, Header file, Andrei Alexandrescu, C++0x, Operators in C and C++, Name mangling, C++ classes, Virtual function, Microsoft Visual C++ Name Mangling, Placement syntax, Boost C++ Libraries, Decltype, Template metaprogramming, Compatibility of C and C++, Concepts, Sizeof, Copy constructor, Reference, Opaque pointer, Database Management Library, Typedef, POCO C++ Libraries, Virtual inheritance, Carbide.c++, Return value optimization, Alexander Stepanov, Precompiled header, String, Wide character, Inner class, One Definition Rule, Curiously recurring template pattern, ACCU, Undefined behavior, Argument-dependent name lookup, Sequence point, New, ODB, Expression templates, Assignment operator, Circular dependency, Dev-C++, Copy elision, Ios, Pragma once, Substitution failure is not an error, The lexer hack, Typename, Run-time type information, Most vexing parse, Special member functions, Erase-remove idiom, David Abrahams, Variadic macro, Edison Design Group, Rule of three, CodeSynthesis XSD, Typeid, Plain old data structure, Fstream, Functional, Single Compilation Unit, Dynamic cast, Pete Becker, Delete, Herb Sutter, Loki, Seekg, Scott Meyers, E. Balagurusamy, Partial template specialization, OpenC++, AspectC++, C++ Report, Header-only, Prefix header, Significantly Prettier and Easier C++ Syntax, Tech Edge, CFLAGS, Exception guarantees, List of C++ multi-threading libraries, List of C++ template libraries, Ifstream, Traits class, Pro C, GNU E, Plain Old C++ Object, Mophun, BCX, ObjectCenter, Dominance, Auto-linking, Mentat. Excerpt: C++0x (pronounced ´´see plus plus oh ex´´) is the unofficial name of the planned new standard for the C++ programming language (originally, finalization was expected in 2008 or 2009, but the ´´0x´´ was retained). C++0x is intended to replace the existing C++ standard, ISO/IEC 14882, which was published in 1998 and updated in 2003. These predecessors are informally but commonly known as C++98 and C++03. The new standard will include several additions to the core language and will extend the C++ standard library, incorporating most of the C++ Technical Report 1 (TR1) libraries most likely with the exception of the library of mathematical special functions. Since the standard is not yet finalized, this article may not reflect the most recent state of C++0x. The first working draft international standard was published in August 2010 (N3126), with the last working draft being (N3291) dated 5 April 2011. In their March 2011 meeting, the ISO/IEC JTC1/SC22/WG21 C++ Standards Committee voted C++0x (N3290) to Final Draft International Standard (FDIS) status. This means that this final draft, dated 11 April 2011, is ready for review and approval by the ISO; the final specification is expected to be published sometime in mid-2011. To be able to finish closer to schedule, the Committee decided to focus its efforts on the solutions introduced up until 2006 and ignore newer proposals. The modifications for C++ will involve both the core language and the standard library. In the development of every utility of the new standard, the committee has applied some directives: Attention to beginners is considered important, because they will always compose the majority of computer programmers, and because many beginners would not intend to extend their knowledge of , limiting themselves to operate in the aspects of the language in which they a...
This an intensive guide for anyone who needs to master the advanced features of C++ quickly. It introduces the powerful features of C++ 14 most useful for scientific and engineering applications, without assuming previous programming or C++ experience. Readers will learn how to take advantage of the powerful libraries available to C++ programmers: both the Standard Template Library (STL) and scientific libraries for arithmetic, linear algebra, differential equations, and graphs. Throughout, Gottschling demonstrates how to write clear and expressive software using object orientation, generics, metaprogramming, concurrency, and procedural techniques.