静的メタプログラミング (別名「テンプレート メタプログラミング」) は、コンパイル時にプログラムを実行できる優れた 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++ の静的メタプログラミングについてさらに学びたい場合、最良の情報源 (書籍、Web サイト、オンライン コースウェアなど) は何ですか?