This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.
PDF The popular standard, used most often with the free Adobe® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
The Definitive Reference to C++ Templates—Fully Updated for the Latest C++ Standards
Templates are among the most powerful features of C++, but they remain misunderstood and underutilized, even as the C++ language and development community have advanced. In C++ Templates, Second Edition, three pioneering C++ experts show why, when, and how to use modern templates to build software that’s cleaner, faster, more efficient, and easier to maintain.
Now extensively updated for the C++11, C++14, and C++17 standards, this new edition presents state-of-the-art techniques for a wider spectrum of applications. The authors provide authoritative explanations of all new language features that either improve templates or interact with them, including variadic templates, generic lambdas, class template argument deduction, compile-time if, inline namespaces, and user-defined literals. They also deeply delve into fundamental language concepts (like value categories) and fully cover all standard type traits.
The book starts with an insightful tutorial on basic concepts and relevant language features. The remainder of the book serves as a comprehensive reference, focusing first on language details and then on coding techniques, advanced applications, and sophisticated idioms. Throughout, examples clearly illustrate abstract concepts and demonstrate best practices for exploiting all that C++ templates can do.
The companion website, tmplbook.com, contains sample code and additional updates.
Acknowledgments for the Second Edition
Acknowledgments for the First Edition
About This Book
Part I: The Basics
Chapter 1: Function Templates
Chapter 2: Class Templates
Chapter 3: Nontype Template Parameters
Chapter 4: Variadic Templates
Chapter 5: Tricky Basics
Chapter 6: Move Semantics and enable_if<>
Chapter 7: By-Value or By-Reference?
Chapter 8: Compile-Time Programming
Chapter 9: Using Templates in Practice
Chapter 10: Basic Template Terminology
Chapter 11: Generic Libraries
Part II: Templates in Depth
Chapter 12: Fundamentals in Depth
Chapter 13: Names in Templates
Chapter 14: Instantiation
Chapter 15: Template Argument Deduction
Chapter 16: Specialization and Overloading
Chapter 17: Future Directions
Part III: Templates and Design
Chapter 18: The Polymorphic Power of Templates
Chapter 19: Implementing Traits
Chapter 20: Overloading on Type Properties
Chapter 21: Templates and Inheritance
Chapter 22: Bridging and Static and Dynamic Polymorphism
Chapter 23: Metaprograms
Chapter 24: Typelists
Chapter 25: Tuples
Chapter 26: Discriminated Unions
Chapter 27: Expression Templates
Chapter 28: Debugging Templates
Appendix A: The One-Definition Rule
Appendix B: Value Categories
Appendix C: Overload Resolution
Appendix D: Standard Type and Meta Utilities
Appendix E: Concepts