Static metaprogramming (aka "template metaprogramming") เป็นเทคนิค C ++ ที่ยอดเยี่ยมที่ช่วยให้สามารถเรียกใช้โปรแกรมได้ในเวลาคอมไพล์ หลอดไฟดับลงในหัวของฉันทันทีที่ฉันอ่านตัวอย่างการเขียนโปรแกรมเมตาแบบบัญญัตินี้:
#include <iostream>
using namespace std;
template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };
template<>
struct factorial< 0 > { enum { ret = 1 }; };
int main() {
cout << "7! = " << factorial< 7 >::ret << endl; // 5040
return 0;
}
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรมแบบคงที่ C ++ แหล่งข้อมูลที่ดีที่สุดคืออะไร (หนังสือเว็บไซต์บทเรียนออนไลน์อะไรก็ได้)