#include #include using namespace std; template struct factorial { enum {value = I * factorial::value}; }; template <> struct factorial<0> { enum {value = 1}; }; int main() { cout << factorial<4>::value << "\n"; return EXIT_SUCCESS; }