Statische Metaprogrammierung (auch als "Template-Metaprogrammierung" bezeichnet) ist eine großartige C ++ - Technik, mit der Programme zur Kompilierungszeit ausgeführt werden können. Eine Glühbirne ging in meinem Kopf aus, sobald ich dieses kanonische Metaprogrammierungsbeispiel las:
#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;
}
Wenn Sie mehr über statische C ++ - Metaprogrammierung erfahren möchten, welche Quellen sind die besten (Bücher, Websites, Online-Kursunterlagen usw.)?