Uses static constexpr to return a result (e.g., calculating a factorial at compile time).

Passing types ( int , std::vector ) into templates as if they were data. 2. Metafunctions

To handle "base cases" (the exit condition for recursion).