C++ Generic Programming & Templates isn't just a reference, it's your definitive playbook for unlocking the full power of compile-time polymorphism. From architecting constraint-driven APIs with Concepts to fusing loops with Expression Templates, this book guides you through every facet of modern C++ metaprogramming. You'll learn how to build reusable, zero-overhead libraries that scale from embedded systems to high-performance servers, all while keeping build times and binary sizes in check. What You'll Learn ✔ Constraint-Driven API Design - Leverage C++20 Concepts, requires-clauses, and abbreviated function templates to specify intent and eliminate misuse at compile time - Compose fine-grained concept hierarchies that mirror the STL and ensure overload resolution chooses exactly the right algorithm - Craft custom diagnostics with static_assert and if constexpr to provide immediate, actionable error messages ✔ Variadic Metaprogramming & Pack Utilities - Master parameter-pack expansions, sizeof..., and fold expressions to implement sum, logical conjunction/disjunction, and tuple concatenation in a single line - Use std:: index_sequence, integer_sequence, and compile-time loops to iterate over heterogeneous std:: tuple and std:: array without recursion - Apply the Detection Idiom, SFINAE (std:: enable_if_t), and variable templates to probe and adapt to type capabilities ✔ Expression Templates for Numeric Kernels - Build lazy evaluation frameworks that fuse chained operations (a + b + c) into a single loop, eliminating temporaries and maximizing cache locality - Extend vectors to matrices and tensor libraries, implementing block-level optimizations and SIMD packet traits - Study real-world patterns from Eigen's math kernels and learn best practices for debugging and controlling code size ✔ Policy-Based Design, Mix-Ins & CRTP - Structure generic classes via variadic policy packs to inject memory allocators, logging, threading, and validation behaviors at compile time - Employ CRTP for static polymorphism, compile-time registration, and mix-in composition without virtual tables - Combine tag dispatch, full and partial specialization, and enable_if to steer implementation branches precisely ✔ Modern Metaprogramming Libraries - Harness Boost.MP11 for lightweight, header-only type-list algorithms (mp_transform, mp_filter, mp_sort) - Adopt Boost.Hana's heterogeneous containers, compile-time strings, and functional algorithms for value-level computations and pattern matching - Integrate Range-v3 (and C++20 Ranges) to build lazy, composable pipelines with filter, transform, zip, and chunk views ✔ Building Production-Ready Libraries - Balance header-only and precompiled components with explicit instantiation and PIMPL to curb compile times and binary bloat - Modularize with CMake: define interface vs. implementation targets, generate YourLibConfig.cmake, and support componentized find_package - Package and publish via Conan and vcpkg, manage semantic versioning, ABI stability, and cross-platform integration ✔ Testing, Benchmarking & Profiling - Drive comprehensive unit tests on templates with Catch2's TEMPLATE_TEST_CASE and Google Test's Who This Book Is For - C++ library authors building reusable, high-performance frameworks - Systems and embedded engineers demanding zero-overhead abstractions - Developers integrating generic components in large-scale, multi-module projects - DevOps and platform architects packaging and distributing template-heavy code across teams Packed with complete code samples, real-world case studies, and actionable best practices, C++ Generic Programming & Templates arms you with the strategies you need to master modern C++ metaprogramming where every template instantiation.
ThriftBooks sells millions of used books at the lowest everyday prices. We personally assess every book's quality and offer rare, out-of-print treasures. We deliver the joy of reading in recyclable packaging with free standard shipping on US orders over $20. ThriftBooks.com. Read more. Spend less.