Templates let algorithms work with many types, but each algorithm still has requirements. This chapter makes those requirements explicit with C++20 concepts, then applies generic programming to ranges, parameter packs, folds, forwarding, and template compilation.
Concepts and generic programming
Constraints, variadic templates, and compile-time checking