#include namespace clanguml { namespace t20018 { template struct Factorial { static const int value = N * Factorial::value; static void print(int answer) { Factorial::print(answer); } }; template <> struct Factorial<0> { static const int value = 1; static void print(int answer) { std::cout << "The answer is " << answer << "\n"; } }; template struct Answer { static void print() { T::print(N); } }; void tmain() { Answer>::print(); } } }