Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เทมเพลต Metaprogramming ใน C++


เมื่อเราเขียนโปรแกรมเพื่อทำการคำนวณ ณ เวลาคอมไพล์โดยใช้เทมเพลต เรียกว่า Template Metaprogramming

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

template<int n>struct power {
   enum { value = 4*power<n-1>::value };
};

template<>struct power<0> {
   enum { value = 1 };
};

int main() {
   cout <<”power is:”<< power<7>::value << endl;
   return 0;
}

ผลลัพธ์

power is:16384

ในตัวอย่างข้างต้น เมื่อคอมไพเลอร์เห็นค่า power<7>::value จะพยายามสร้างอินสแตนซ์ของค่าพารามิเตอร์เป็น 7 ปรากฎว่าจะต้องสร้าง power<6>เป็นค่าคงที่การแจงนับ ณ เวลาคอมไพล์ . สำหรับ power<6> คอมไพเลอร์ต้องการ power<5>และอื่นๆ สุดท้าย คอมไพเลอร์ใช้ funStruct<1>::value และการเรียกซ้ำของเวลาคอมไพล์สิ้นสุดลง นี่เรียกว่าเมตาโปรแกรมมิ่งเทมเพลต