La métaprogrammation statique (alias "métaprogrammation par gabarit") est une excellente technique C++ qui permet l'exécution de programmes au moment de la compilation. Une ampoule s'est allumée dans ma tête dès que j'ai lu cet exemple canonique de métaprogrammation :
#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;
}
Si l'on veut en savoir plus sur la métaprogrammation statique en C++, quelles sont les meilleures sources (livres, sites Web, didacticiels en ligne, etc.) ?
48 votes
L'ampoule s'est éteinte ou s'est allumée ?
41 votes
Off. Définitivement éteint.