C++ Templates and Concepts
Templates generate type-specific code from a generic definition. C++ concepts constrain template arguments and make generic API requirements explicit and diagnosable.
Compile-time generic programming and constrained template interfaces.