Template metaprogramming (TMP) trong C++ sử dụng template để thực hiện tính toán trong thời gian biên dịch, giảm thiểu công việc khi chạy chương trình, từ đó tối ưu hóa hiệu suất. TMP hoạt động nhờ vào việc "đệ quy" template, giúp xử lý logic phức tạp trước khi chương trình chạy.
**Ví dụ:** Tính giai thừa của một số nguyên tại thời điểm biên dịch:
```cpp
template<int N>
struct Factorial {
static const int value = N * Factorial<N - 1>::value;
};
template<>
struct Factorial<0> {
static const int value = 1;
};
int result = Factorial<5>::value; // result = 120
```
Ở đây, `Factorial<5>::value` được tính trong thời gian biên dịch, giúp tối ưu hiệu suất khi chạy chương trình.