Advanced Metaprogramming in Classic C++, 3rd Edition
- Length: 572 pages
- Edition: 3
- Language: English
- Publisher: Apress
- Publication Date: 2015-04-29
- ISBN-10: 1484210115
- ISBN-13: 9781484210116
- Sales Rank: #1340110 (See Top 100 Books)
Advanced Metaprogramming in Classic C++ offers a detailed look into C++ template metaprogramming (TMP); TMP is presented in the book as a set of techniques that will bring a new style in C++ and making it 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.
The book teaches metaprogramming using Classic C++, that is, not using the two newer standards. This is done to maximize compatibility and clearly illustrate the technique, enabling the reader to comprehend difficult material without the burdens of compiler errors, and other unnecessary complexities and enabling a much more intense treatment of the subject. In so doing, all subsequent additions to the C++ language are fully compatible with the code in this book and users familiar with them can leverage the techniiques introduced in C++ XX to make the patterns in this book even more powerful. There is a chapter though that discusses issues regarding the two newer standards.
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.
What you’ll learn
- What templates and the small object toolkit are, and how to use them
- How to do overload resolution
- How to do metaprogramming with interfaces, algorithms, functors and refactoring
- How to work with code generators
- What is opaque type principle and how to use it
- How to work with debugging templates and more
- A chapter devoted to issues surrounding C++0x and C++14
Who this book is for
This book is for experienced C++ programmers who want to learn more.
Table of Contents
PART 1: #include
Chapter 2: Small Object Toolkit
PART 2: #include
Chapter 3: Static Programming
Chapter 4: Overload Resolution
Chapter 5: Interfaces
Chapter 6: Algorithms
Chapter 7: Code Generators
Chapter 8: Functors
Chapter 9: The Opaque Type Principle
PART 3: #include
Chapter 10: Refactoring
Chapter 11: Debugging Templates
Chapter 12: C++0x
APPENDIX A: Exercises
APPENDIX B: Bibliography