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.

Understand exactly how templates
behave, and avoid common pitfalls

Use templates to write more efficient,
flexible, and maintainable software

Master today's most effective
idioms and techniques

Reuse source code without compromising
performance or safety

Benefit from utilities for generic
programming in the C++ Standard Library

David
Vandevoorde, vice president of engineering at the
Edison Design Group, Inc (EDG), architects key features of the company's
C++ compiler. A co-founder of the renowned comp.lang.c++.moderated forum, he
is also active in C++ standardization. He holds a PhD and MSc in computer science
from Rensselaer Polytechnic Institute, and
an MEng from Brussels Free University. His technical interests include algorithm
development and teaching.

Nicolai
M. Josuttis is an independent systems architect, technical manager,
consultant and trainer being active in C++ standardization for 20 years. Sitting
in the Library Working Group he especially cares for the view of the ordinary
application programmer. He is well known in the C++ Community for speaking and
writing with authority, being the author of The
C++ Standard Library - A Tutorial and Reference, 2nd Edition, (Addison-Wesley,
2012) and several other books on object-oriented programming, C++, and Serive-Oriented
Architecture (SOA).

Douglas
Gregor is a senior compiler developer with a background in C++ library
design. As an early contributor to Boost, he developed several libraries that
became part of the C++ standard. Later, he led the implementation of the open-source
Clang C++ compiler as its code owner through the completion of C++11 support,
and was active in the standardization of C++11. He holds a PhD in computer science
from Rensselaer Polytechnic Institute.