C++ Template Metaprogramming:Concepts, Tools, and Techniques from Boost and Beyond 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.
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.