テンプレートメタプログラミング(template metaprogramming)で,20の階乗を計算するコード.
#include <iostream> using namespace std; template <int64_t N> class X { public: int64_t operator()(){ return X<N-1>()() * N; } }; template <> class X<1> { public: int64_t operator()() { return 1;} }; int main() { cout << X<20>()() << endl; return 0; }