La metaprogrammazione statica (nota anche come "metaprogrammazione dei modelli") è una grande tecnica C ++ che consente l'esecuzione di programmi in fase di compilazione. Una lampadina si è spenta nella mia testa non appena ho letto questo esempio canonico di metaprogrammazione:
#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;
}
Se si vuole saperne di più sulla metaprogrammazione statica C ++, quali sono le migliori fonti (libri, siti web, corsi on-line, qualunque cosa)?