C++20 Concepts are a major feature that allows you to specify constraints on template arguments at compile time.
template<typename T>
concept Numeric = std::is_arithmetic_v<T>;
template<Numeric T>
T Add(T a, T b) { return a + b; }
Advantages: Drastically better compiler errors (no more 100-line template tracebacks) and faster compile times.