Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Lập trình siêu mẫu (Template Metaprogramming) trong C++


Template Metaprogramming là kỹ thuật thực hiện tính toán tại thời điểm biên dịch (compile-time) bằng cách dùng template. Trình biên dịch triển khai đệ quy template để tính giá trị trước khi chương trình chạy.

Ví dụ: Tính 4^n tại compile-time

#include <iostream>
using namespace std;

template<int n> struct power {
    enum { value = 4 * power<n-1>::value };
};
template<> struct power<0> { // đặc biệt hóa cơ sở
    enum { value = 1 };
};

int main() {
    cout << "4^7 = " << power<7>::value << endl; // 16384
    return 0;
}

Kết quả

4^7 = 16384

Khi biên dịch thấy power<7>::value, nó khởi tạo power<7>, yêu cầu power<6>, ... đến power<0>. Đệ quy template kết thúc tại đặc biệt hóa power<0>. Toàn bộ tính toán diễn ra lúc biên dịch, không tốn chi phí runtime.